Sign inGet Started

Python · FastAPI

Kirim email pertama Anda dari endpoint FastAPI menggunakan klien async Bird Python SDK. Tiga langkah: instal, kirim, jalankan.

1. Instal SDK

Contoh kode
python -m pip install messagebird-sdk "fastapi[standard]"
Memerlukan Python 3.10+. Paket impor adalah bird.

2. Kirim email

Ekspor kunci API Anda. SDK membaca BIRD_API_KEY dari environment dan menyimpulkan region (us1 atau eu1) dari awalan bk_us1_ / bk_eu1_, sehingga AsyncBird() tidak memerlukan argumen:
Contoh kode
export BIRD_API_KEY="bk_us1_..."
Buat main.py. Buat satu AsyncBird saat startup dan gunakan kembali di seluruh request: objek ini mengelola pool koneksi dan aman digunakan bersama antar-task.
Contoh kode
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_ adalah penulisan Python untuk field from (from adalah kata reserved). onboarding@messagebird.dev adalah sender onboarding bersama milik Bird (tidak perlu verifikasi domain) dan delivered@messagebird.dev adalah penerima sandbox yang selalu berhasil dikirim.
SDK mencoba ulang kegagalan sementara secara otomatis dan menggunakan kembali kunci idempotensi panggilan pada setiap percobaan. Ini mencegah percobaan ulang mengirim pesan dua kali.

3. Coba

Contoh kode
fastapi dev main.py
curl -X POST http://localhost:8000/send
Bird menerima pesan dengan 202 dan mengirimkannya secara asinkron; endpoint Anda mengembalikan ID em_ dan statusnya:
Contoh kode
{
  "id": "em_01ky7ma8y2es1s2akzk53tmjn0",
  "status": "accepted"
}
Ambil pesan berdasarkan ID em_ dengan await client.email.get(...) dan pantau status berubah dari accepted ke delivered.

Langkah selanjutnya