Sign inGet Started

Python · Flask

Invia la tua prima email da una route Flask usando il client sincrono dell'Bird Python SDK. Tre passaggi: installa, invia, esegui.

1. Installa l'SDK

Esempio di codice
python -m pip install messagebird-sdk flask
Richiede Python 3.10+. Il pacchetto da importare è bird.

2. Invia un'email

Esporta la tua chiave API. L'SDK legge BIRD_API_KEY dall'ambiente e deduce la regione (us1 o eu1) dal prefisso bk_us1_ / bk_eu1_, quindi Bird() non richiede argomenti:
Esempio di codice
export BIRD_API_KEY="bk_us1_..."
Crea app.py. Costruisci un singolo Bird al caricamento del modulo e riutilizzalo tra le richieste: gestisce un pool di connessioni ed è sicuro da condividere tra thread.
Esempio di codice
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_ è la forma Python del campo from (from è una parola riservata). onboarding@messagebird.dev è il mittente condiviso di onboarding di Bird (nessuna verifica del dominio necessaria) e delivered@messagebird.dev è un destinatario sandbox che recapita sempre.
L'SDK ripete automaticamente i tentativi in caso di errori transitori e riutilizza la chiave di idempotenza della chiamata a ogni tentativo. Questo impedisce che un nuovo tentativo invii il messaggio due volte.

3. Provalo

Esempio di codice
flask run
curl -X POST http://localhost:5000/send
Bird accetta il messaggio con un 202 e lo recapita in modo asincrono; la tua route restituisce l'ID em_ e lo stato:
Esempio di codice
{
  "id": "em_01ky7ma8y2es1s2akzk53tmjn0",
  "status": "accepted"
}
Recupera il messaggio tramite il suo ID em_ con client.email.get(...) e osserva lo stato passare da accepted a delivered.

Prossimi passi