Go
Senden Sie Ihre erste E-Mail aus Go in drei Schritten: Installieren Sie das SDK, schreiben Sie einen Handler zum Senden und führen Sie ihn aus. Dieser Schnellstart verwendet net/http aus der Standardbibliothek, kein Framework nötig.
1. Installieren
go mod init example.com/bird-quickstart
go get github.com/messagebird/bird-sdk-goDas SDK erfordert Go 1.24+. Erstellen Sie einen API-Schlüssel unter Developers > API-Schlüssel im Dashboard und exportieren Sie ihn; das SDK leitet die Region aus dem bk_us1_-/bk_eu1_-Präfix des Schlüssels ab, weitere Konfiguration ist nicht nötig:
export BIRD_API_KEY="bk_us1_..."2. Senden
Erstellen Sie main.go mit einem HTTP-Handler, der über die gemeinsame Onboarding-Domain von Bird sendet, sodass keine Domain-Verifizierung nötig ist:
package main
import (
"encoding/json"
"errors"
"log"
"net/http"
"os"
bird "github.com/messagebird/bird-sdk-go"
"github.com/messagebird/bird-sdk-go/option"
)
func main() {
client, err := bird.NewClient(option.WithAPIKey(os.Getenv("BIRD_API_KEY")))
if err != nil {
log.Fatal(err)
}
http.HandleFunc("POST /send", func(w http.ResponseWriter, r *http.Request) {
msg, err := client.Email.Send(r.Context(), bird.EmailSendParams{
From: "onboarding@messagebird.dev",
To: []string{"delivered@messagebird.dev"},
Subject: "Hello from Bird",
HTML: "<p>My first Bird email.</p>",
})
if err != nil {
var apiErr *bird.APIError
if errors.As(err, &apiErr) {
http.Error(w, apiErr.Error(), apiErr.StatusCode)
return
}
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusAccepted)
_ = json.NewEncoder(w).Encode(msg)
})
log.Fatal(http.ListenAndServe(":3000", nil))
}Das SDK erzeugt pro Send-Aufruf einen Idempotenzschlüssel und verwendet ihn bei Timeouts, 429-Antworten und 5xx-Antworten erneut. Ein erneuter Versuch erzeugt daher keinen zweiten Versand.
3. Ausprobieren
go run . &
curl -X POST localhost:3000/sendBird antwortet mit 202, nimmt die E-Mail zur asynchronen Zustellung an und der Handler gibt die Nachricht zurück. Die *_count-Felder verfolgen Empfänger durch die Zustellungsstatus. In der ersten Antwort ist ein Empfänger akzeptiert und keiner zugestellt:
{
"id": "em_01ky7ma8y2es1s2akzk53tmjn0",
"status": "accepted",
"category": "marketing",
"from": { "email": "onboarding@messagebird.dev" },
"to": [{ "email": "delivered@messagebird.dev" }],
"subject": "Hello from Bird",
"accepted_count": 1,
"processed_count": 0,
"delivered_count": 0,
"deferred_count": 0,
"bounced_count": 0,
"complained_count": 0,
"rejected_count": 0,
"open_count": 0,
"click_count": 0,
"track_opens": true,
"track_clicks": true,
"created_at": "2026-07-23T13:58:20.866Z"
}Da der Empfänger die delivered@messagebird.dev-Sandbox-Adresse ist, ist die Zustellung garantiert. Rufen Sie die Nachricht über ihre em_-ID mit client.Email.Get ab und beobachten Sie, wie der Status auf delivered wechselt.
Nächste Schritte
- Go-SDK-Referenz: jede Methode, jeder Parameter und jeder Fehlertyp.
- Erste E-Mail senden: derselbe Ablauf mit curl und dem Dashboard.
- Sende-Domains: Verifizieren Sie Ihre eigene Domain für den Produktionsversand.
- E-Mail-API-Referenz: das vollständige Request- und Response-Schema.
Verwandte Ressourcen
Weiter mit der Dokumentation, Anleitungen und Beispielen zu diesem Thema.