Go · Gin
Envía tu primer correo electrónico desde una aplicación Gin en tres pasos: instala el SDK, añade una ruta que envíe y ejecútala.
1. Instalar
Ejemplo de código
go mod init example.com/bird-gin-quickstart
go get github.com/gin-gonic/gin github.com/messagebird/bird-sdk-goEl SDK requiere Go 1.24+. Obtén una clave API en Developers > Claves API en el panel y expórtala; el SDK infiere la región a partir del prefijo bk_us1_ / bk_eu1_ de la clave, así que no necesitas configurar nada más:
Ejemplo de código
export BIRD_API_KEY="bk_us1_..."2. Enviar
Crea main.go con una ruta que envíe a través del dominio compartido de incorporación de Bird, para que no sea necesario verificar un dominio:
Ejemplo de código
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"))
}El SDK genera una clave de idempotencia por cada llamada a Send y la reutiliza al reintentar tiempos de espera agotados, respuestas 429 y respuestas 5xx. Por lo tanto, un reintento no crea un segundo envío.
3. Pruébalo
Ejemplo de código
go run . &
curl -X POST localhost:3000/sendBird responde con 202, aceptando el correo para entrega asíncrona, y la ruta devuelve el mensaje. Los campos *_count rastrean a los destinatarios a lo largo de los estados de entrega. En la respuesta inicial, un destinatario está aceptado y ninguno entregado:
Ejemplo de código
{
"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"
}Como el destinatario es la dirección sandbox delivered@messagebird.dev, la entrega está garantizada. Consulta el mensaje por su ID em_ con client.Email.Get y observa cómo el estado cambia a delivered.
Siguientes pasos
- Referencia del SDK de Go: todos los métodos, parámetros y tipos de error.
- Envía tu primer correo electrónico: el mismo flujo con curl y el panel.
- Dominios de envío: verifica tu propio dominio para enviar en producción.
- Referencia de API de correo electrónico: el esquema completo de solicitud y respuesta.
Recursos relacionados
Continúa con la documentación, guías y ejemplos sobre este tema. Los recursos están en inglés.
Ver la guíaTesting email without spamming anyoneExplorar la funcionalidadTest email deliverySeguir la ruta de aprendizajeOperate messaging reliably
Prueba el ejercicio y obtén un resumen de implementación