‹ 返回主页 旭旭-king旭旭-king 注册不迷路~
图文教程 · 邮箱篇

用自己的域名发邮件
验证码随便发

从域名验证到 API 发信,一套免费方案搞定网站注册验证码、密码重置、通知邮件。

适合谁
已有域名、想用它发网站验证码 / 通知邮件的人
能得到
发件域验证通过 + 第一封 API 邮件 + 验证码防坑指南
耗时
约 30 分钟 (主要是等 DNS 生效)
第一部分 · 认识 Resend
1

Resend 是什么

Resend 是专做事务性邮件(验证码、密码重置、订单通知)的邮件 API 服务。你写几行代码调用它的接口就能发信,不用自己搭邮件服务器,省心且送达率有保障。

2

免费额度(够不够用先看这)

  • 每月 3,000 封、每天上限 100 封,可验证 1 个域名;
  • 免费版走共享 IP 池,日发超 100 封才需考虑付费版——验证码场景免费版通常够用。
额度数字以 resend.com/pricing 实时页面为准,写这篇教程时是这个数,官方随时可能调整。
3

注册并创建发信 Key

去 resend.com 点 Sign Up,可用 GitHub 或邮箱注册,无需信用卡。注册后去 API Keys 建一把发信 Key(re_ 开头)。

Key 只显示一次,创建时务必当场保存好,丢了只能重新建一把。
第二部分 · 添加域名并验证(发件身份认证)
4

原理一句话

要在 DNS 里加三类记录,向全世界证明"这个域名授权 Resend 代我发信",Gmail 这些收件方才会信任你发出的邮件。不做这步,你的信基本都会进垃圾箱。

5

在 Resend 添加域名

面板点 Domains → Add Domain,输入你的域名(如 yourdomain.com),面板会给出该域名专属的 DNS 记录值。

每条记录的值以面板实时显示为准,不要照抄网上(包括本教程下面示意)的例子!
6

三类 DNS 记录一次看懂

下面是三类记录的示意(示例值,真实值看你 Resend 面板):

SPF
类型TXT 记录
主机@
值v=spf1 include:send.resend.com ~all

声明"哪些服务器可以替我发信"。注意:一个域名只能有一条 SPF 记录,已有的话要合并,不能新增第二条。

DKIM
类型CNAME 记录
主机resend._domainkey
值(Resend 面板给出,指向 Resend)

给每封邮件加数字签名,收件方用公钥验证邮件没被篡改。Resend 一般给 2–3 条 CNAME,全部都要加。

DMARC
类型TXT 记录
主机_dmarc
值v=DMARC1; p=none;

告诉收件方"当 SPF/DKIM 都没通过时怎么处理我的邮件",是三项认证的总开关。

↑ 上面是示意卡片,不是 Resend 面板截图。真实的主机名和值以你 Resend 面板实时显示为准。
7

去 DNS 服务商逐条添加

在你的 DNS 服务商处添加(Cloudflare:DNS → Records → Add record)。邮件类记录一律选"仅 DNS"(灰色云朵),不要开 CDN 代理,开了代理验证会失败。

8

回 Resend 点验证

加完等 DNS 生效(Cloudflare 通常几分钟),回 Resend 面板点 Verify,全部变绿即"已验证"。验证通过后,该域名下任意发件地址(如 noreply@、hello@)都可直接用。

整个流程串起来就是:
1注册 Resend
建发信 Key
2添加域名
拿到 DNS 记录值
3DNS 加记录
SPF/DKIM/DMARC
4点 Verify
全部变绿
5调 API
发出第一封信
第三部分 · 用 API 发第一封邮件
9

发信接口长这样

请求:POST https://api.resend.com/emails,请求头带 Authorization: Bearer re_你的Key 和 Content-Type: application/json。

必填字段只有三个:from(发件人)、to(数组)、subject;正文 html 和 text 二选一或都给:

{
  "from": "你的品牌 <[email protected]>",
  "to": ["[email protected]"],
  "subject": "你的验证码",
  "html": "<p>…</p>",
  "text": "…纯文本…"
}
from 支持 "显示名 <地址>" 格式,地址必须是已验证域名下的。显示名(如 Xuxuking-ai)直接写在 from 里就行。
10

关于发件人头像

Gmail 里发件人旁边那个头像(字母或图片)不是邮件里能指定的。它只认三样:该地址绑定的 Google 账号头像、BIMI 认证 logo、收件人自己存的联系人头像。想让所有人都看到自定义头像,得用这个发件地址注册个 Google 账号并上传头像(前提是这个地址能收信,见第六部分)。

第四部分 · 验证码邮件最佳实践
11

双格式必备

同时提供 html(美观排版) 和 text(纯文本兜底)。实测发现纯 HTML 邮件更容易被 Gmail 判垃圾,加上 text 版后通过率明显改善。

12

验证码本身的规矩

  • 6 位数字即可;
  • 用 SHA-256 存哈希,不存明文;
  • 10 分钟有效,单个码最多允许试 5 次,防暴力破解。
13

频率限制防薅羊毛

同一邮箱 1 分钟内只能请求 1 次、每天设上限;同一 IP 短时间大量请求要限流并返回友好提示。不然有人拿你的接口狂刷,你的免费额度几天就没了。

14

防"枚举账号"的小心机

不存在的邮箱请求"找回密码"时,接口仍返回成功,但不真发信——防止攻击者用你的接口一个个试出哪些邮箱注册过。

15

文案写清楚

写清有效期和"非本人操作请忽略"。中英双语时,把关键信息(验证码数字、有效期)在两种语言里各出现一次,别让用户猜。

第五部分 · 为什么认证全过还是进垃圾箱
16

先确认:这不是配置错误

典型现象:SPF、DKIM、DMARC 在 Gmail 认证头里全部显示 pass,邮件仍进垃圾箱。这是新域名没有发信声誉的典型表现——Gmail 对新注册、零历史的域名天然不信任,需要几周的真实收发来积累声誉。这是时间问题,没有开关能立刻解决。

17

三个解法(按效果排序)

  • 每次收到都点"这不是垃圾邮件"——亲手训练 Gmail,几次之后就会改判,最有效;
  • 把发件地址加到 Google 通讯录——通讯录里的发件人基本不进垃圾箱;
  • 养声誉——持续几周真实邮件往来后自然好转,这段时间提醒用户去垃圾箱捞验证码。
18

DMARC 的 p=none 是什么意思

p=none 表示"只监控、不拦截":认证失败时收件方不做任何处理,适合刚上线阶段。等一切稳定后可收紧为 p=quarantine(扔垃圾箱)或 p=reject(直接拒收)。

收紧之前务必确认 SPF/DKIM 长期稳定,否则会误杀你自己的正常邮件。
第六部分 · 附带:让域名能收信(Cloudflare Email Routing)
19

为什么需要收信

Resend 只管"发"。但有些场景需要这个域名地址能收:比如收 Google 账号的验证码(配发件人头像的前提)、收用户回复。Cloudflare 的 Email Routing 完全免费,把邮件转发到你的个人邮箱就行。

20

开通步骤

  • 前提:域名 DNS 已托管在 Cloudflare(免费套餐即可);
  • 面板选中域名 → 左侧 Email → Email Routing → 启用,按向导自动添加 3 条 MX 记录;
  • 在"目的地地址"添加你的个人邮箱(如 Gmail),去个人邮箱点验证链接;
  • 在"路由规则"里建一条规则:指定地址(如 noreply@)或 catch-all 全收,动作选"发送到"已验证的个人邮箱。
目的地地址必须先验证通过才能建规则,别跳步。
21

两处注意

  • MX(管收信)和 SPF/DKIM(管发信)不冲突,可以共存;
  • 如果向导提示 SPF 相关,一个域名只能保留一条 v=spf1 开头的 TXT 记录,多了要合并。
22

验证收信通了没

往 [email protected] 发一封测试信,几秒到一分钟内应出现在个人邮箱收件箱。通了之后,就能用该地址注册 Google 账号、上传头像——之后所有经此地址发出的邮件,在 Gmail 里都会显示该头像(头像同步到各收件端可能需要几小时)。

⏰ 时效性声明

  • Resend 免费额度、面板文案以 resend.com 实时页面为准,本教程数字仅供参考;
  • 各 DNS 记录的主机名与值以 Resend 面板实时显示为准,不要照抄教程里的示例;
  • Cloudflare Email Routing 的中文面板文案可能随版本微调,截图仅供参考。
本教程未使用任何真实面板截图,示意卡片均为手绘;DNS 示例值请以 Resend 面板实时显示为准。

教程看完了,别走丢了

更多 AI 干货和福利,第一时间发在频道里;有问题直接私信博主,一对一解答。