Sign inGet Started

Python · FastAPI

Verstuur je eerste e-mail vanuit een FastAPI-endpoint met de async client van de Bird Python SDK. Drie stappen: installeren, versturen, uitvoeren.

1. Installeer de SDK

Codevoorbeeld
python -m pip install messagebird-sdk "fastapi[standard]"
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 AsyncBird() heeft geen argumenten nodig:
Codevoorbeeld
export BIRD_API_KEY="bk_us1_..."
Maak main.py aan. Maak één AsyncBird aan bij het opstarten en hergebruik deze voor alle requests: het poolt verbindingen en kan veilig worden gedeeld tussen taken.
Codevoorbeeld
from bird import AsyncBird, APIError
from fastapi import FastAPI, HTTPException

app = FastAPI()
client = AsyncBird()


@app.post("/send", status_code=202)
async def send() -> dict[str, str]:
    try:
        message = await 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:
        raise HTTPException(status_code=502, detail=str(err))
    return {"id": message.id, "status": message.status}
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. Probeer het

Codevoorbeeld
fastapi dev main.py
curl -X POST http://localhost:8000/send
Bird accepteert het bericht met een 202 en bezorgt het asynchroon; je endpoint retourneert het em_-ID en de status:
Codevoorbeeld
{
  "id": "em_01ky7ma8y2es1s2akzk53tmjn0",
  "status": "accepted"
}
Haal het bericht op via zijn em_-ID met await client.email.get(...) en volg hoe de status van accepted naar delivered verandert.

Volgende stappen