这是一份偏实战的记录:目标是让自己的站点可以用 xxx@your-domain.com 发送注册验证码、余额提醒、系统通知等邮件。这里以 Resend + Cloudflare DNS 为例,截图里的账号、长 DKIM、公网配置等关键信息已经做了打码或缩略,实际配置时请以你自己 Resend 页面展示的值为准。
适合场景:
- 自建站点需要发送注册验证码、找回密码、余额提醒等事务邮件。
- 不想直接用个人 Outlook / Gmail / QQ 邮箱 SMTP。
- 域名 DNS 托管在 Cloudflare,或者你熟悉 Cloudflare 的 DNS 面板。
最终效果
完成后,Resend 的域名状态应该变成 Verified,表示这个域名已经可以用于发信。
为什么不用个人邮箱 SMTP
个人邮箱 SMTP 能跑起来,但更适合个人脚本,不太适合正式站点:
- 很多邮箱服务会限制登录方式、发信频率和风控策略。
- 密码/授权码管理不够清晰。
- 域名发信信誉、退信、SPF/DKIM/DMARC 这些能力通常不如事务邮件服务完整。
Resend 这类事务邮件服务的好处是:配置清晰、API/SMTP 都支持、域名验证路径明确,后续迁移到其他服务商也比较容易。
准备工作
你需要准备:
- 一个已经注册好的域名,例如
your-domain.com。 - 域名的 DNS 管理权限,本文以 Cloudflare 为例。
- 一个 Resend 账号。
- 一个需要发信的应用后台,例如 NewAPI / CCFork 或其他自建系统。
步骤一:在 Resend 添加域名
进入 Resend 后台:
- 打开
Domains。 - 点击
Add domain。 - 填写你的域名,例如
your-domain.com。 - Region 可以先用默认的
North Virginia (us-east-1)。 - 如果只需要发送邮件,不要打开
Enable Receiving。
这里重点是“只配置发信”。如果你打开收信功能,Resend 会额外要求配置收信 MX,这对注册验证码/通知邮件不是必须的。
步骤二:把 DNS 记录复制到 Cloudflare
Resend 会给出一组 DNS 记录。只开启发信时,核心通常是下面 4 条:
文字版结构如下,长字段只做示例,实际请复制 Resend 页面里的完整值:
类型 主机记录 记录值 用途 TXTresend._domainkey
p=MIGfMA...QIDAQAB
DKIM 验证
MX
send
10 feedback-smtp.us-east-1.amazonses.com
退信/反馈
TXT
send
v=spf1 include:amazonses.com ~all
SPF 授权
TXT
_dmarc
v=DMARC1; p=none;
DMARC 策略
Cloudflare 添加方式:
- 进入 Cloudflare 对应域名。
- 打开
DNS -> Records。 - 点击
Add record。 - 逐条添加 Resend 给出的记录。
- TXT/MX 记录保持 DNS only 即可,TTL 用 Auto。
注意:DKIM 的 TXT 值很长,复制时不要少字符,也不要手动换行。
步骤三:回 Resend 验证
DNS 添加完成后,回到 Resend 的域名详情页,点击 Verify DNS Records。
一般 Cloudflare 的 DNS 生效很快,但 Resend 检测可能会有几分钟延迟。状态变化大概是:
not started -> pending -> verified
如果一直没有通过,可以先用命令确认公网 DNS 是否已经能查到:
dig TXT resend._domainkey.your-domain.com
dig MX send.your-domain.com
dig TXT send.your-domain.com
dig TXT _dmarc.your-domain.com
如果你的本机 DNS 被代理或污染影响,也可以用 DoH 查:
curl -sS 'https://cloudflare-dns.com/dns-query?name=send.your-domain.com&type=MX' \
-H 'accept: application/dns-json'
步骤四:在应用里配置 SMTP
域名变成 Verified 后,就可以在应用后台配置 SMTP 了。
通用 SMTP 参数:
字段 值 SMTP Hostsmtp.resend.com
Port
465 或 587
Username
resend
Password
Resend API Key
From Address
noreply@your-domain.com
如果是 NewAPI / CCFork 这类系统,对应配置通常是:
SMTPServer = smtp.resend.com
SMTPPort = 465
SMTPSSLEnabled = true
SMTPAccount = resend
SMTPToken = <你的 Resend API Key>
SMTPFrom = noreply@your-domain.com
也可以用 587 + STARTTLS,但如果你的应用支持 SMTPSSLEnabled,我更建议先用 465 + SSL,路径更直接。
步骤五:发测试邮件
正式打开注册邮箱验证、余额提醒之前,建议先做一次最小测试:
- 用后台的“测试邮件”功能发给自己的常用邮箱。
- 检查收件箱和垃圾箱。
- 看发件人是否显示为你的域名邮箱。
- 再测试注册验证码、找回密码、余额提醒等真实链路。
常见坑
1. DKIM 一直不过
优先检查这几件事:
- TXT 主机记录是不是
resend._domainkey,不要写成完整域名后又被 Cloudflare 自动拼接一次。 - DKIM 内容是否复制完整。
- TXT 值里有没有多余换行、空格或中文引号。
2. SPF / MX 不通过
Resend 的发送链路会用 send.your-domain.com 这个子域。Cloudflare 里要分别添加:
- MX:
send - TXT:
send
这两个不是根域名 @。
3. 只想发信,不想收信
不要打开 Resend 的 Enable Receiving。只做事务邮件发送时,不需要把域名收信也交给 Resend。
4. 邮件进垃圾箱
新域名发信信誉需要慢慢建立。可以先从低频事务邮件开始,不要一上来批量群发。发件地址建议固定,例如:
noreply@your-domain.com
support@your-domain.com
5. API Key 不要截图公开
SMTP Password 本质上就是 Resend API Key。它只应该保存在你自己的后台配置或环境变量中,不要发到论坛、截图、日志或前端页面。
小结
整体链路其实不复杂:
Resend 添加域名
-> Cloudflare 添加 DNS 记录
-> Resend 验证域名
-> 应用后台填写 SMTP
-> 发测试邮件
我个人更推荐把“域名验证”和“应用 SMTP 配置”分开验证。先保证 Resend 域名是 Verified,再接应用。这样排查问题时很清楚:Resend 没过就是 DNS 问题;Resend 已过但应用发不出去,才去看 SMTP 参数、端口、防火墙或应用日志。
1 个帖子 - 1 位参与者