Sign inGet Started

Python · Flask

Verstuur je eerste e-mail vanuit een Flask-route met de synchrone client van de Bird Python SDK. Drie stappen: installeren, versturen, uitvoeren.

1. Installeer de SDK

Codevoorbeeld
python -m pip install messagebird-sdk flask
Vereist Python 3.10+. Het importpakket is bird.

2. Verstuur een e-mail

Exporteer je API-sleutel. De SDK leest BIRD_API_KEY uit de omgeving en leidt de regio (us1 of eu1) af uit het bk_us1_ / bk_eu1_-prefix, dus Bird() heeft geen argumenten nodig:
Codevoorbeeld
export BIRD_API_KEY="bk_us1_..."
Maak app.py aan. Maak één Bird aan bij het laden van de module en hergebruik deze voor alle requests: de client beheert een verbindingspool en is veilig om te delen tussen threads.
Codevoorbeeld
from bird import Bird, APIError
from flask import Flask, jsonify

app = Flask(__name__)
client = Bird()


@app.post("/send")
def send():
    try:
        message = client.email.send(
            from_="onboarding@messagebird.dev",
            to=["delivered@messagebird.dev"],
            subject="Hello from Bird",
            html="<p>My first Bird email.</p>",
        )
    except APIError as err:
        return jsonify({"error": str(err)}), 502
    return jsonify({"id": message.id, "status": message.status}), 202
from_ is de Python-schrijfwijze van het from-veld (from is een gereserveerd woord). onboarding@messagebird.dev is de gedeelde onboarding-afzender van Bird (geen domeinverificatie nodig) en delivered@messagebird.dev is een sandbox-ontvanger die altijd aflevert.
De SDK probeert tijdelijke fouten automatisch opnieuw en hergebruikt de idempotentiesleutel van de aanroep bij elke poging. Dit voorkomt dat een nieuwe poging het bericht dubbel verstuurt.

3. Test het

Codevoorbeeld
flask run
curl -X POST http://localhost:5000/send
Bird accepteert het bericht met een 202 en levert het asynchroon af; je route retourneert het em_-ID en de status:
Codevoorbeeld
{
  "id": "em_01ky7ma8y2es1s2akzk53tmjn0",
  "status": "accepted"
}
Haal het bericht op aan de hand van het em_-ID met client.email.get(...) en bekijk hoe de status verandert van accepted naar delivered.

Volgende stappen