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
Codebeispiel
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:
Codebeispiel
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:
Codebeispiel
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
Codebeispiel
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:
Codebeispiel
{
"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. Die Ressourcen sind auf Englisch.
Anleitung ansehenTesting email without spamming anyoneDie Funktion erkundenTest email deliveryDem Lernpfad folgenOperate messaging reliably
Übung ausprobieren und ein Implementierungs-Briefing erhalten