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 账号直接登录。

添加域名

  1. 控制台 → DomainsAdd Domain
  2. 输入你的域名(如 example.com
  3. 系统生成 DNS 记录(DKIM / SPF / MX)
  4. 到你的 DNS 管理后台添加这些记录
  5. 等待状态变为 Verified

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果不配置域名,可以使用 onboarding@resend.dev 作为测试发件地址,但只能发给注册时使用的邮箱。

创建 API Key

  1. 控制台 → API KeysCreate API Key
  2. 权限选 Sending
  3. 复制并保存 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 封/月
数据一致性 单一数据源 两边存需对账

五、注意事项

  1. 域名必须验证:发件人地址的域名需在 Resend Dashboard 中验证,否则发送失败
  2. onboarding@resend.dev 仅限于测试:使用默认地址只能发给注册邮箱,验证域名后才能发给任意收件人
  3. 不要用 onboarding@resend.dev 作为正式发件地址:它仅用于开发测试
  4. 每日 100 封:Batch 发送也计入限额
  5. 发件人名称可自定义:不受验证,对方收到时显示为该名称
  6. 收件人名称不校验:格式为 "名称 <邮箱>" 时不验证名称真实性
  7. API Key 安全:建议通过环境变量或 Secret 管理,不要硬编码在代码中
  8. 域名预热:新域名不要立即大量发送,避免被标记为垃圾邮件

六、为什么我的博客从 MailerLite 换到了 Resend

之前博客使用 MailerLite 管理订阅和推送,实际使用中遇到几个问题:

  1. 单发邮件非常别扭 — MailerLite 的单发需要通过 group 触发事件的间接方式实现,无法在 API 调用中灵活控制。而 Resend 原生支持 POST /emails,体验和普通 API 一样。

  2. 群发有延迟 — MailerLite 的 Campaign 发送有约 4 分钟的处理延迟,而 Resend 的 Batch 接口是即时发送的。

  3. 概念重 — 需要理解 Group / Segment / Campaign 等营销概念,还要混用 v2 和 v3 API,代码维护成本高。Resend 只有一个 email 概念。

  4. 数据两边存 — 订阅者数据同时存在 D1 和 MailerLite,需要写对账逻辑来保证一致性。换成 Resend 后所有数据只存在 D1,不再需要验证一致性。

  5. API Key 太多 — 之前有 Cloudflare EMAIL binding + MailerLite API Key,两个服务各管各的。现在全部统一走 Resend,一个 API Key 搞定所有邮件场景(测试邮件、欢迎邮件、订阅通知、RSS 推送、热点推送)。

结论:如果你的需求是「管理邮件营销活动」(大量订阅者、邮件模板设计、打开率统计),MailerLite 更合适。如果你的需求仅仅是「把邮件发出去」(应用通知、订阅提醒),Resend 是更清爽的选择。


七、总结

Resend 是一款专注于「把邮件发出去」的 API 服务,没有营销平台的各种复杂概念。接入方式就是一个 REST API + API Key,调用 fetch 就能发邮件。如果只是需要一个邮件发送功能而不是邮件营销平台,它是很轻量的选择。

posted @ 2026-08-07 15:36  PC2005-cloud  阅读(47)  评论(0)    收藏  举报