Resend 邮件服务接入指南:免费的开发者邮件 API 使用教程
一、Resend 是什么
Resend 是一个面向开发者的邮件发送服务,基于 AWS SES 构建,提供简洁的 REST API,无需 SDK 即可调用。
核心特性
- API 极简:只有一个
POST /emails接口,没有 Group / Campaign / Segment 等营销概念 - 即发即达:无队列延迟,调用即发送
- 域名认证:支持 DKIM/SPF/DMARC 自动配置,提高投递率
- 发送日志:Dashboard 中可查看每封邮件的发送状态
免费额度
| 项目 | 免费版 |
|---|---|
| 每日发送量 | 100 封 |
| 约每月估算 | 3000 封 |
| 最多域名 | 1 个 |
| 最多 API Key | 2 个 |
超过则需升级付费版($20/月起,按量计费)。对于个人博客(几十个订阅者、每天 1~2 次推送),免费版完全够用。
二、域名配置(解决「只能发给自己」的限制)
注册
访问 Resend 官网,推荐用 GitHub 账号直接登录。
添加域名
- 控制台 → Domains → Add Domain
- 输入你的域名(如
example.com) - 系统生成 DNS 记录(DKIM / SPF / MX)
- 到你的 DNS 管理后台添加这些记录
- 等待状态变为 Verified

如果不配置域名,可以使用
onboarding@resend.dev作为测试发件地址,但只能发给注册时使用的邮箱。
创建 API Key
- 控制台 → API Keys → Create API Key
- 权限选
Sending - 复制并保存 Key(仅显示一次,丢失需重新生成)

三、API 用法(单发 / 组发 / 收件人名称)
使用 fetch 直接调用,无需 SDK。
3.1 单发
curl -X POST "https://api.resend.com/emails" \
-H "Authorization: Bearer re_xxxx" \
-H "Content-Type: application/json" \
-d '{
"from": "发件人名称 <mail@yourdomain.com>",
"to": ["user@example.com"],
"subject": "邮件主题",
"text": "纯文本正文",
"html": "<h1>HTML 正文</h1>"
}'
响应:
{ "id": "em_xxxxxxxx" }
3.2 组发(Batch)
curl -X POST "https://api.resend.com/emails/batch" \
-H "Authorization: Bearer re_xxxx" \
-H "Content-Type: application/json" \
-d '[
{
"from": "名称 <mail@yourdomain.com>",
"to": ["alice@example.com"],
"subject": "给 Alice",
"html": "<h1>Hi Alice</h1>"
},
{
"from": "名称 <mail@yourdomain.com>",
"to": ["bob@example.com"],
"subject": "给 Bob",
"html": "<h1>Hi Bob</h1>"
}
]'
响应:
{ "data": [{ "id": "em_xxx" }, { "id": "em_yyy" }] }
Batch 接口一次最多 100 封,超过需分批调用。
3.3 收件人名称
to 字段支持 显示名 <邮箱> 格式,名称可随意填写、不校验:
{
"to": ["张三 <zhangsan@qq.com>"]
}
也可以只传邮箱:
{
"to": ["user@example.com"]
}
3.4 字段说明
| 字段 | 必填 | 说明 |
|---|---|---|
from |
✅ | 发件人,格式 名称 <email>,域名需在 Resend 已验证 |
to |
✅ | 收件人数组,每项可为 email 或 名称 <email> |
subject |
✅ | 邮件主题 |
html |
❌ | HTML 正文(html 和 text 至少提供一个) |
text |
❌ | 纯文本正文 |
cc |
❌ | 抄送 |
bcc |
❌ | 密送 |
replyTo |
❌ | 回复地址 |
attachments |
❌ | 附件,base64 编码 |
四、Resend vs MailerLite:怎么选?
| 对比维度 | Resend | MailerLite |
|---|---|---|
| 定位 | 开发者邮件 API | 邮件营销平台 |
| 发送速度 | 即时 | 组发约 4 分钟延迟 |
| 单发支持 | 原生 POST /emails |
需通过 group 触发事件间接实现 |
| 群发 | POST /emails/batch |
Campaign 按 group 发送 |
| 订阅管理 | 自建数据库,完全可控 | 内置订阅者管理,受平台约束 |
| 概念复杂度 | 轻量,只有 email | 需理解 group/segment/campaign 等 |
| 免费额度 | 100 封/天 | 1000 订阅者、12000 封/月 |
| 数据一致性 | 单一数据源 | 两边存需对账 |
五、注意事项
- 域名必须验证:发件人地址的域名需在 Resend Dashboard 中验证,否则发送失败
onboarding@resend.dev仅限于测试:使用默认地址只能发给注册邮箱,验证域名后才能发给任意收件人- 不要用
onboarding@resend.dev作为正式发件地址:它仅用于开发测试 - 每日 100 封:Batch 发送也计入限额
- 发件人名称可自定义:不受验证,对方收到时显示为该名称
- 收件人名称不校验:格式为
"名称 <邮箱>"时不验证名称真实性 - API Key 安全:建议通过环境变量或 Secret 管理,不要硬编码在代码中
- 域名预热:新域名不要立即大量发送,避免被标记为垃圾邮件
六、为什么我的博客从 MailerLite 换到了 Resend
之前博客使用 MailerLite 管理订阅和推送,实际使用中遇到几个问题:
-
单发邮件非常别扭 — MailerLite 的单发需要通过 group 触发事件的间接方式实现,无法在 API 调用中灵活控制。而 Resend 原生支持
POST /emails,体验和普通 API 一样。 -
群发有延迟 — MailerLite 的 Campaign 发送有约 4 分钟的处理延迟,而 Resend 的 Batch 接口是即时发送的。
-
概念重 — 需要理解 Group / Segment / Campaign 等营销概念,还要混用 v2 和 v3 API,代码维护成本高。Resend 只有一个 email 概念。
-
数据两边存 — 订阅者数据同时存在 D1 和 MailerLite,需要写对账逻辑来保证一致性。换成 Resend 后所有数据只存在 D1,不再需要验证一致性。
-
API Key 太多 — 之前有 Cloudflare EMAIL binding + MailerLite API Key,两个服务各管各的。现在全部统一走 Resend,一个 API Key 搞定所有邮件场景(测试邮件、欢迎邮件、订阅通知、RSS 推送、热点推送)。
结论:如果你的需求是「管理邮件营销活动」(大量订阅者、邮件模板设计、打开率统计),MailerLite 更合适。如果你的需求仅仅是「把邮件发出去」(应用通知、订阅提醒),Resend 是更清爽的选择。
七、总结
Resend 是一款专注于「把邮件发出去」的 API 服务,没有营销平台的各种复杂概念。接入方式就是一个 REST API + API Key,调用 fetch 就能发邮件。如果只是需要一个邮件发送功能而不是邮件营销平台,它是很轻量的选择。

浙公网安备 33010602011771号