Freemail接入Resend发件渠道:从创建API Key到第一封邮件发出的完整教程
【免费下载链接】freemailCloudflare 域名邮箱系统 临时邮箱系统 支持API 调用 支持多渠道发件 支持用户管理 domain mail tempmail项目地址: https://gitcode.com/gh_mirrors/free/freemail
Freemail 是一款基于 Cloudflare Workers + D1 的开源临时邮箱系统,支持 API 调用、邮件转发与多渠道发件。本文手把手带你完成Freemail 接入 Resend 发件渠道的全流程:绑定并验证发信域名 → 创建 Resend API Key → 配置到 Cloudflare Workers → 发出第一封邮件,全程不到 15 分钟 💡
为什么用 Resend 给临时邮箱发件?
Freemail 本身负责"收"(Cloudflare Email Routing 负责收件路由),而"发"则由第三方发件渠道完成。目前项目内置三大发件渠道:Resend、SendFlare、Cyberpersons,三者的配置格式完全一致,可以同时启用、按发件人域名自动路由。
Resend 作为最常用的发件渠道,优势在于:
- 📧纯 API 发件:无需 SMTP,Worker 里一个
fetch就能发出邮件 - 🔐密钥简单:一个 API Key 即可,支持按域名精细授权
- 🌐多域名:同一个变量里可配置多个域名的独立密钥
代码读取密钥的环境变量优先级为:
RESEND_API_KEY>RESEND_TOKEN>RESEND,推荐统一使用RESEND_API_KEY。
开始前的准备工作
| 准备项 | 说明 |
|---|---|
| Cloudflare 账号 | 已部署 Freemail(可用一键部署按钮快速完成) |
| 一个自有域名 | 如yourdomain.com,需在 Cloudflare 托管或可编辑其 DNS |
| Resend 账号 | 免费注册即可获得发件额度 |
| 发件权限 | 严格管理员默认可发件;普通用户需在管理后台开启can_send |
第一步:在 Resend 绑定并验证发信域名
发件的前提是域名在 Resend 侧完成验证,否则所有发件请求都会被拒绝。
- 登录 Resend 后台,左侧菜单进入Domains,点击右上角Add Domain:
- 按向导输入你的发件域名(如
yourdomain.com),Resend 会生成需要添加的 DNS 记录:
- 前往域名的 DNS 管理(Cloudflare 控制台即可),添加 Resend 提示的记录(SPF / MX 等):
- 记录添加完成后回到 Resend 点击验证,等待状态变为Verified:
- 验证通过后,即可使用该域名下的任意地址发件,例如
no-reply@yourdomain.com:
⚠️注意:发件地址必须使用该已验证域名。Freemail 首页"邮箱后端"里配置的域名,需要与 Resend 已验证域名保持一致。
第二步:创建 Resend API Key
- 进入 Resend →API Keys,点击Create API Key:
- 为密钥起个名字(如
mailfree),权限建议选择包含 Emails 读写发送的完整权限:
- 创建成功后复制生成的 Key(以
re_开头)。Key 只显示一次,请妥善保存:
第三步:把 API Key 配置到 Cloudflare Workers
本项目运行在 Cloudflare Workers,密钥需要以Secret形式配置,域名作为普通变量配置。两种任选其一:
方式一:命令行(Wrangler)
# 设置 Resend 密钥(Secret) wrangler secret put RESEND_API_KEY方式二:Dashboard(Git 集成部署必用)
进入 Cloudflare Dashboard → Workers → 选中你的 Worker → Settings → Variables:
- 在Secrets添加
RESEND_API_KEY,值为你刚创建的 Key - 在Variables确认
MAIL_DOMAIN,值为收发件域名列表(多个用逗号分隔,如iding.asia,example.com)
💡 使用 Git 集成自动部署时,环境变量不会被提交到代码仓库,请务必在 Dashboard 手动配置。
第四步:部署并发出第一封邮件
- 部署(Git 集成部署会自动触发;命令行部署则执行
wrangler deploy,本地调试可用wrangler dev) - 打开 Freemail 首页,确认"当前邮箱"已生成(如
xxxx@你的域名) - 点击发邮件,填写收件人、主题与内容:
- 点击发送,后端会调用 Resend API 发出邮件,并在数据库中记录该封邮件。稍后切换到收件箱的发件箱标签,即可看到这封已发送的记录与详情 ✅
后端实现位于
src/api/send.js与src/email/providers/resend/index.js:发送成功后会写入sent_emails表(含provider字段标记渠道),前端"发件箱"读取的就是这份记录。
多域名发信如何配置?
如果你有多个域名且希望各自使用独立的 Resend 密钥(独立计费/限额),RESEND_API_KEY支持三种格式:
# 单密钥:通配所有发件域名 RESEND_API_KEY="re_xxxxxxxxxxxxxxxxxxxxxxxx" # 键值对(推荐,多域名独立配置) RESEND_API_KEY="domain1.com=re_key1,domain2.com=re_key2" # JSON 格式 RESEND_API_KEY='{"domain1.com":"re_key1","domain2.com":"re_key2"}'配置多个渠道时,路由规则为:键值对/JSON 命中优先 → 单密钥兜底(SendFlare → Resend → Cyberpersons 依次匹配),均未命中则报错"未找到域名对应的发件 API Key"。路由逻辑在src/email/providers/index.js与src/email/providers/shared.js中实现。
常见问题排查
| 现象 | 原因与解决 |
|---|---|
| 提示"未配置 Resend API Key" | 未设置RESEND_API_KEY,或未以 Secret 形式写入,检查 Workers → Settings → Secrets |
| 403 / Unauthorized | 发件域名未在 Resend 完成验证,或 From 地址与已验证域名不一致 |
| 429 限流 | 短时间内请求过密,稍后重试或改用批量接口POST /api/send/batch |
| 普通用户发送报 403 | 用户未开启发件权限,需在管理后台打开can_send |
| 中文/HTML 显示异常 | 项目已自动为 HTML 生成纯文本版本,确认收件客户端支持 |
相关文件速查
- 📄 官方 Resend 配置教程:
docs/resend.md - 📄 多渠道适配说明:
docs/provider-adapter.md - 📄 Resend 渠道实现:
src/email/providers/resend/index.js - 📄 渠道路由分发器:
src/email/providers/index.js - 📄 发件记录接口:
src/api/send.js - 📄 本地变量示例:
wrangler.toml
到这里,你的 Freemail 就已经拥有 Resend 发件能力了。如果还想接入 SendFlare 或 Cyberpersons,只要按照同样的格式配置对应的SENDFLARE_API_KEY/CYBERPERSONS_API_KEY环境变量即可,无需改动任何代码 🎉
【免费下载链接】freemailCloudflare 域名邮箱系统 临时邮箱系统 支持API 调用 支持多渠道发件 支持用户管理 domain mail tempmail项目地址: https://gitcode.com/gh_mirrors/free/freemail
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考