Sign inGet Started

Python · FastAPI

Senden Sie Ihre erste E-Mail von einem FastAPI-Endpunkt mit dem Async-Client des Bird Python SDK. Drei Schritte: installieren, senden, ausführen.

1. SDK installieren

Codebeispiel
python -m pip install messagebird-sdk "fastapi[standard]"
Erfordert Python 3.10+. Das Import-Paket ist bird.

2. Eine E-Mail senden

Exportieren Sie Ihren API-Schlüssel. Das SDK liest BIRD_API_KEY aus der Umgebung und leitet die Region (us1 oder eu1) aus dem Präfix bk_us1_ / bk_eu1_ ab, sodass AsyncBird() keine Argumente benötigt:
Codebeispiel
export BIRD_API_KEY="bk_us1_..."
Erstellen Sie main.py. Erzeugen Sie beim Start eine AsyncBird-Instanz und verwenden Sie sie für alle Requests: Sie bündelt Verbindungen und kann sicher über Tasks hinweg geteilt werden.
Codebeispiel
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_ ist die Python-Schreibweise des Felds from (from ist ein reserviertes Wort). onboarding@messagebird.dev ist der gemeinsame Onboarding-Absender von Bird (keine Domain-Verifizierung nötig) und delivered@messagebird.dev ist ein Sandbox-Empfänger, der immer zugestellt wird.
Der SDK wiederholt fehlgeschlagene Anfragen bei vorübergehenden Fehlern automatisch und verwendet bei jedem Versuch denselben Idempotenz-Schlüssel. Das verhindert, dass ein erneuter Versuch die Nachricht doppelt sendet.

3. Ausprobieren

Codebeispiel
fastapi dev main.py
curl -X POST http://localhost:8000/send
Bird nimmt die Nachricht mit einem 202 an und stellt sie asynchron zu; Ihr Endpunkt gibt die em_-ID und den Status zurück:
Codebeispiel
{
  "id": "em_01ky7ma8y2es1s2akzk53tmjn0",
  "status": "accepted"
}
Rufen Sie die Nachricht anhand ihrer em_-ID mit await client.email.get(...) ab und beobachten Sie, wie der Status von accepted zu delivered wechselt.

Nächste Schritte