Sign inGet Started

Go · Gin

Senden Sie Ihre erste E-Mail aus einer Gin-Anwendung in drei Schritten: SDK installieren, eine Route zum Senden hinzufügen und ausführen.

1. Installieren

Codebeispiel
go mod init example.com/bird-gin-quickstart
go get github.com/gin-gonic/gin github.com/messagebird/bird-sdk-go
Das SDK erfordert Go 1.24+. Erstellen Sie einen API-Schlüssel unter Developers > API keys 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 einer Route, die über die gemeinsame Onboarding-Domain von Bird sendet, sodass keine Domain-Verifizierung erforderlich ist:
Codebeispiel
package main

import (
	"errors"
	"log"
	"net/http"
	"os"

	"github.com/gin-gonic/gin"
	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)
	}

	r := gin.Default()
	r.POST("/send", func(c *gin.Context) {
		msg, err := client.Email.Send(c.Request.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) {
				c.JSON(apiErr.StatusCode, gin.H{"error": apiErr.Error()})
				return
			}
			c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
			return
		}
		c.JSON(http.StatusAccepted, msg)
	})

	log.Fatal(r.Run(":3000"))
}
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/send
Bird antwortet mit 202 und nimmt die E-Mail zur asynchronen Zustellung an; die Route gibt die Nachricht zurück. Die *_count-Felder verfolgen Empfänger durch die Zustellstatus. 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