Go
三步从 Go 发送第一封邮件:安装 SDK,编写一个发送邮件的处理函数,然后运行。本快速入门使用标准库的 net/http,无需任何框架。
1. 安装
代码示例
go mod init example.com/bird-quickstart
go get github.com/messagebird/bird-sdk-goSDK 需要 Go 1.24+。在控制台的 Developers > API keys 中获取一个 API 密钥并导出;SDK 会根据密钥的 bk_us1_ / bk_eu1_ 前缀推断区域,无需其他配置:
代码示例
export BIRD_API_KEY="bk_us1_..."2. 发送
创建 main.go,其中包含一个通过 Bird 共享的入门域名发送邮件的 HTTP 处理函数,因此无需域名验证:
代码示例
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))
}SDK 为每次 Send 调用生成一个幂等键,并在重试超时、429 响应和 5xx 响应时复用该键。因此,重试不会产生第二次发送。
3. 试一试
代码示例
go run . &
curl -X POST localhost:3000/sendBird 以 202 响应,表示邮件已被接受进行异步投递,处理函数返回消息。*_count 字段跟踪收件人的投递状态。在初始响应中,一个收件人已被接受,尚无收件人完成投递:
代码示例
{
"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"
}后续步骤
- Go SDK 参考文档:所有方法、参数和错误类型。
- 发送第一封邮件:使用 curl 和控制台完成相同流程。
- 发送域名:验证自有域名以用于生产环境发送。
- Email API 参考文档:完整的请求和响应结构。
相关资源
继续查阅此主题的文档、指南和示例。资源为英文。