import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { WelcomeEmail } from "./emails/welcome";
const bird = new BirdClient({
apiKey: process.env.BIRD_API_KEY!,
});
const { data, error } = await bird.email.send({
from: "Bird <hello@bird.com>",
to: ["ada@example.com"],
subject: "Your invite is ready",
html: await render(<WelcomeEmail name="Ada" />),
}).safe();
if (error) throw error;
console.log(data.id);
// → "em_2bX91Yk8h..."
You can sign in any time at bird.com/login.
Your test API key is on your dashboard, ready to send.
已经在通过 SMTP 发送邮件?
保留您现有的 SMTP 客户端,将其连接到 Bird 的中继服务器。使用 SMTP 设置页面获取区域主机、TLS 端口和身份验证信息。如果您的应用需要接收和解析邮件,请从入站邮件开始。
五分钟内发出你的第一封邮件。
用你已经在用的编程语言。
发送是 Bird Email API 的核心。你的第一次发送可以发到沙盒地址(delivered@messagebird.dev),这样你就能在验证域名之前体验完整平台功能(发送、webhook、地址抑制)。
const msg = await bird.email.send({
from: { email: "onboarding@messagebird.dev", name: "Bird" },
to: ["delivered@messagebird.dev"],
subject: "Hello from Bird",
html: "<p>My first Bird email.</p>",
});
console.log(msg.id, msg.status); // "em_…", "accepted"五项能力,无需自行构建。
每个 Bird 通道使用相同的接口规范。
- 01
事务邮件 + 营销邮件。
同一个接口既能发送密码重置邮件,也能发送营销活动邮件。一个类别字段决定地址抑制和退订规则如何生效。
- 02
模板随你选择。
传入原始 HTML,在你的应用中将 React Email 模板渲染为 HTML 后发送结果,或指定一个已存储的模板由服务端渲染。你的工具链无需改变。
- 03
批量发送最多 100 条。
每次调用最多 100 条独立消息,每条有各自的收件人和变量,整批作为一个单元验证,确保不会出现部分发送。
- 04
接口级幂等保障。
每次发送都接受一个幂等键,超时后重试请求会返回原始结果,而不会重复发送。
- 05
每次状态变更都有 webhook。
已接收、已投递、已打开、已点击、已退回、已投诉。每个事件都经过 HMAC 签名,防重放、幂等,所有通道使用相同的消息结构。
从您的应用发出第一个请求。
创建账户并生成 API 密钥,然后按照发送指南使用测试收件人完成发送。
已经在用其他服务发送邮件?一个下午即可完成迁移。
你现有的调用几乎不用改动:替换客户端,保留模板,将 webhook 指向一个接口。迁移指南涵盖 SendGrid、Amazon SES、Mailgun 和 Resend。
import sgMail from "@sendgrid/mail";
sgMail.setApiKey(process.env.SENDGRID_API_KEY!);
await sgMail.send({
from: "hello@yourdomain.com",
to: "delivered@messagebird.dev",
subject: "Your invite is ready",
html: "<p>Welcome aboard, Ada.</p>",
});
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
await bird.email.send({
from: "hello@yourdomain.com",
to: ["delivered@messagebird.dev"],
subject: "Your invite is ready",
html: "<p>Welcome aboard, Ada.</p>",
});
一条消息或一百条,一次调用。
在一次请求中批量发送最多 100 条独立消息,每条有各自的收件人和变量。整批作为一个单元验证:一条无效消息会导致整个调用返回 422,确保不会部分发送。一个幂等键即可保障整个请求安全重试。
import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { Digest } from "./emails/digest";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const messages = await Promise.all(
users.map(async (u) => ({
from: "Acme <hello@yourdomain.com>",
to: [u.email],
subject: "Your weekly digest",
html: await render(<Digest user={u} />),
})),
);
const { data: batch, error } = await bird.email
.sendBatch(messages)
.safe();
if (error) throw error;
console.log(`queued ${batch.data.length} messages`);
为每次发送附加你自己的上下文。
标签是一等的、可过滤的维度:在统计 API 中按活动、模板或实验切分投递和互动数据(每条消息最多 20 个标签)。元数据是任意 JSON 数据,最大 2 KB,在每次读取和 webhook 中原样返回,让你自己的 ID 随消息一起传递。
await bird.email.send({
from: "Acme <hello@yourdomain.com>",
to: ["delivered@messagebird.dev"],
subject: "Your invite is ready",
html: "<p>Welcome aboard, Ada.</p>",
tags: [{ name: "campaign", value: "spring-2026" }],
metadata: { user_id: "u_2bX91", order_id: "ord_5512" },
});
追踪每条消息的完整生命周期。
发送立即返回 202;结果以每个收件人一个 webhook 的形式送达。验证一个签名,按类型分发:与你处理 SMS、语音和 WhatsApp 时使用的消息结构完全相同。
import { bird } from "@/lib/bird";
export async function POST(req: Request) {
const event = bird.webhooks.unwrap(
await req.text(),
Object.fromEntries(req.headers),
);
switch (event.type) {
case "email.delivered":
await markDelivered(event.data.email_id);
break;
case "email.bounced":
await flag(event.data.recipient, event.data.bounce_type);
break;
}
return new Response(null, { status: 204 });
}
硬退回和投诉会更新收件人抑制列表。退订会记录用户的拒收偏好。后续发送时会检查这些记录。
email.accepted发送已被接收,正在准备投递。email.processed已排队等待收件人邮件服务器处理。email.delivered收件人邮件服务器已接受该消息。email.deferred暂时被拒绝,我们将自动重试。email.bounced永久失败:载荷中包含退回类型和 SMTP 状态码。email.opened收件人打开了消息。可能触发多次。email.clicked收件人点击了一个跟踪链接。email.complained收件人将消息举报为垃圾邮件。email.unsubscribed收件人通过跟踪的退订链接选择了退出。
上线前测试每种结果。
在沙盒中,收件人地址决定结果,无需依赖你的账户状态。发送到 delivered@messagebird.dev 可获得正常投递结果,或发送到 bounce@、softbounce@、deferred@、complaint@ 和 suppressed@ 以驱动每种失败路径通过真实的管道和真实的 webhook。无需验证域名,不影响你的发信声誉。生产环境有意设置了门槛:你需要先验证域名,新域名或独立 IP 需要通过预热流程才能承载全部流量。
在文档中深入了解。
阅读发送指南,接入邮件事件和 Webhooks,或者如果你正在从其他服务商迁移,请参考从 SendGrid、SES、Mailgun 或 Resend 的迁移指南。
测试发送相关的行为。
一次成功的发送调用是集成的起点。演练退回和投诉处理,处理重复的 webhook 投递,并决定您的应用如何调度消息或接收回复。
继续您需要的工作流
选择与下一步任务匹配的产品或指南。
161%
Zillow 客户故事中报告的邮件打开率提升。
基于 Bird 构建
当合适的房源出现时,邮件必须即时送达。
Zillow 将时效性房源提醒迁移到 Bird,获得了应对发送高峰的能力和洞察互动效果的分析工具。其团队报告首月邮件打开率提升了 161%。
正在计划迁移或提升发送量?
联系销售关于邮件发送的常见问题
可以同时发送事务性邮件和营销邮件吗?
如果请求超时并重试会怎样?
可以定时发送邮件吗?
可以添加附件吗?
联系我们的邮件团队
构建你的下一个邮件集成。
与我们讨论事务性邮件、批量发送和投递事件。我们将帮助你规划集成方案、发送量和迁移计划。
创建账户,然后创建 API 密钥并发送一条测试消息。
规模扩展
不失控。
在工作区中组织团队,控制 API 访问权限,通过审计日志追踪变更。
Audit log
Production- Workspace
- Production
- Resource
- Delivery agent
- ReadRead & write