在 Mailgun 后台添加发信域名,把 Sending、Tracking、Authentication 三类记录逐条配到子域名的 DNS 里,等验证状态变绿后创建 sending key。文中说明每个字段怎么填、TXT 值为什么不能带引号、Receiving records 为什么不加,以及验证卡住时的排查方向和发送接口的测试命令。

Mailgun 注册并订阅完成之后,第一件该做的事情不是写发送代码,而是把发信域名配好。发信域名没有验证通过,后面写的所有发送逻辑都会卡在同一个地方,邮件发不出去,或者发出去了直接进垃圾箱。
发信域名为什么要在后台单独添加
想要使用 Mailgun 的发信服务,你需要在后台单独添加一个发信域名,再用几条 DNS 记录向邮件服务商证明这个域名是你的。收件方收到邮件时,会通过 SPF 和 DKIM 验证邮件确实来自这个域名,而不是别人伪造的。
建议用子域名作为发信域名,未来即使发信域名被某个邮件服务商标记,公司官网的主域名邮箱也不会被牵连。子域名怎么建,可以看这篇 如何在 Cloudflare 创建子域名。
在 Mailgun 后台添加发信域名
登录 Mailgun 之后,从左侧边栏进入 Send 分组下的 SENDING,点击 Domains,然后在页面右上角点 Add new domain。表单里需要你决定的只有 Domain name,填子域名,例如 mg.example.com,不要填主域名。
Domain Region 决定发送接口的域名,默认的 US 区域对应 api.mailgun.net,选 EU 区域对应 api.eu.mailgun.net,后面写发送代码时会用到。IP Assignment Option 保持默认的共享 IP,等每天稳定发出几百封再考虑专用 IP;Advanced settings 第一次配置不需要调整。
点击右下角的 Add domain 提交,页面会直接跳到这个域名的 DNS Records 界面,接下来要做的就是把里面列出的记录逐条配到子域名的 DNS 里。
把三类 DNS 记录配到子域名上
DNS Records 界面把需要配置的记录分成三组,每一组左边是记录类型和名称,右边是对应的值。三组都要配完,一条都不能少。
- Sending records:SPF 和 DKIM,决定邮件能不能通过域名认证,直接关系到进不进收件箱
- Tracking records:邮件打开率和点击率的追踪域名,通常是 CNAME 记录指向 Mailgun
- Authentication records:DMARC 这类认证策略,告诉收件方发现邮件被篡改时该怎么处理
Receiving records 那一组不要添加。它是给收信用的,加上之后会在子域名下写一条 MX 记录,和现有的企业邮箱解析撞车,得不偿失。
至于值填到哪个位置,取决于你的域名解析托管在哪家服务商。阿里云云解析 DNS 和 Cloudflare 两个后台的入口、字段名称,以及 A、CNAME、MX、TXT 这些常见记录类型的填法,都写在 如何配置域名 DNS 解析 这篇里,对照着填就行。
填写时有两个地方要注意。记录值整段复制,不要手工补全,TXT 记录的值很长,中间不能有空格也不能换行;有些 DNS 后台会自动给值加上引号,而 Mailgun 的验证不认这对引号,贴进去之前先把引号去掉。主机记录同样是相对名称,Mailgun 给的是 em1234、email 这类前缀,不要再把主域名拼一遍。
等验证状态变成绿色
记录加完之后不需要点任何按钮,Mailgun 会按固定频率自己去查 DNS,最慢 24 小时内这些记录的 Status 会全部变成绿色,表示验证成功。
实际经验是大多十几分钟就绿了。长时间停在灰色或者红色,通常是两种原因:一是记录填错了,主机记录多拼了一段域名,或者值复制的时候丢了一截;二是记录还没生效,尤其是刚换过 NS 的域名,本地递归解析器还缓存着旧结果。判断方法在 DNS 那篇里写了,用 dig 查一下就能确认。
创建 Sending Key
验证通过之后,在当前页面的 Domain settings 里找到 Sending Keys,点 Add sending key 创建一条密钥。这条 sending key 是自动化系统调用 Mailgun 发送服务的凭证,无论用 API 还是 SMTP 发信,都靠它认证。
密钥创建之后立刻复制保存,页面不会再次显示完整值。复制完可以用下面这段命令先发一封测试信,确认整条链路通畅:
curl -s --user 'api:YOUR-SENDING-KEY' \
https://api.mailgun.net/v3/mg.example.com/messages \
-F from='postmaster@mg.example.com' \
-F to='you@example.com' \
-F subject='Mailgun sending domain test' \
-F text='Sending domain verified and working.'
把命令里的 YOUR-SENDING-KEY 换成刚创建的 sending key,mg.example.com 换成你的发信域名,you@example.com 换成收信的测试邮箱。返回一个 id 字段就说明邮件已经交给 Mailgun 了,剩下的看收件箱和垃圾箱。如果更习惯用 SMTP,主机是 smtp.mailgun.org,端口 587,用户名填 postmaster@你的发信域名,密码就是这条 sending key。
风险提示 Warning
sending key 等同于这个域名的发送权限,谁拿到都能以你的名义发信。不要写进前端代码,不要提交到 Git 仓库,正式项目里放到服务器的环境变量或者密钥管理服务里读取,换人或者怀疑泄露时直接在后台重新生成一条。
完整流程回顾
从注册 Mailgun 到发送通道可用,一共四步。四步里最花时间的是 DNS 记录,也最容易出错,配完之后整个域名才真正归你控制。
完整流程:四步 / The workflow in four steps
添加发信域名
Domains 里新增子域名,其余选项保持默认。
配置 DNS 记录
Sending、Tracking、Authentication 三类逐条配齐。
等待验证通过
Status 变绿,最慢 24 小时。
创建 sending key
给自动化系统一条可轮换的发送凭证。
下一步
发信域名验证通过、sending key 拿到手,发送通道这一层就算通了。把它接进自动化系统的做法,写在 企业 AI 应用落地案例:如何开发一套 AI Agent 驱动的自动化获客系统 里,包括发文节奏、随机间隔和回复检测这些调度层的设计。
发信通道解决的是怎么把信送出去,名单那一侧则决定送给谁。客户信息、公司规模和邮箱的获取方式可以交给 Apollo 这类工具,从注册到自动发信的完整步骤我们写在把 Apollo 邮件营销从注册配到自动发信这篇里。
每周四送达。
主机评测、建站对比、性能优化技巧和插件推荐 — 每周为 WordPress 站长和建站者精选。
