SendGrid 与 Mailgun 怎么用:账号审核、域名验证、发信报错与进垃圾箱全解
自己搭邮件服务器发信,几乎一定会被各大邮箱当成垃圾邮件:新地址没有信誉,云服务器的 25 端口还常被封。所以做网站、做 App 的开发者,一般会把注册验证码、密码重置、订单通知这类「事务邮件」交给专门的发信服务。SendGrid(现属 Twilio)和 Mailgun(现属 Sinch)是最常被选择的两家,都提供 HTTP 接口和 SMTP 中继,也都有发信日志和退信统计。
从国内使用时,困难通常不在写代码,而在前期:控制台打开慢、注册后账号停在审核状态、发件人没有验证导致接口返回 403、Mailgun 沙盒域名只能发给授权收件人、信发出去了却进了对方的垃圾箱。这些问题分属网络、账号审核、域名配置和发信信誉四个层面,下面先讲两家的差别,再给出配置步骤和排查表。免费额度与套餐近年调整较多,以官方最新条款为准。
SendGrid 与 Mailgun 的差别
两家都能满足个人项目的发信需求,选择上主要看两点:一是你的用户在哪,欧盟用户多又在意数据驻留,可以用 Mailgun 的欧盟区;二是你要不要做营销邮件,SendGrid 的营销模块和模板编辑器更完整。无论选哪家,都需要一个自己能改 DNS 记录的域名,这是后面一切配置的前提。
| 对比项 | SendGrid | Mailgun |
|---|---|---|
| 母公司 | Twilio | Sinch |
| 新账号流程 | 注册后常有人工审核,需说明用途 | 先给沙盒域名,绑定自有域名后正式发信 |
| 发件人验证 | 单个发件人验证或整域名验证 | 整域名验证为主 |
| 接口地区 | 全球统一接口 | 分美国与欧盟两个接口地址 |
| 模板功能 | 可视化动态模板 | 模板功能较简单 |
| 适合场景 | 需要营销邮件与事务邮件并用 | 偏开发者、只发事务邮件 |
| 免费方案 | 有试用或免费档,规则常调整 | 有试用或免费档,规则常调整 |
从注册到发出第一封信:分步操作步骤
- 第一步:先把网络线路准备好。连上刺猬VPN 后再打开 SendGrid 或 Mailgun 的控制台,注册页的人机验证、控制台的图表和文档都依赖境外资源。客户端用自定义用户名和密码注册,不需要邮箱和手机号;
- 第二步:注册发信服务账号。两家都要求用邮箱注册并验证,建议用公司域名邮箱,填写的网站地址要能正常访问,用途说明写清楚是「注册验证码与通知类事务邮件」;
- 第三步:等待审核。SendGrid 新账号常会收到要求补充信息的邮件,如实回复网站用途、发信量和收件人来源,不要写「群发」「推广」;
- 第四步:验证域名。SendGrid 在「Settings」→「Sender Authentication」里选「Authenticate Your Domain」,Mailgun 在「Sending」→「Domains」里添加子域名,例如 mg.example.com,系统会给出几条 CNAME 或 TXT 记录;
- 第五步:到域名的 DNS 管理处添加这些记录。用 Cloudflare 托管 DNS 时,CNAME 记录要把橙色云朵关掉,设为「仅 DNS」,否则验证会失败;
- 第六步:回到控制台点「Verify」。DNS 生效通常几分钟到几小时,验证不通过就用 nslookup 或 dig 查一下记录是否已经可见;
- 第七步:创建 API 密钥。SendGrid 在「API Keys」里创建,只勾选「Mail Send」权限;Mailgun 在「API Security」里创建发信密钥,密钥只显示一次,立刻存入环境变量;
- 第八步:发一封测试信。用 curl 调用接口,发件地址必须属于已验证的域名,先发给自己的几个常用邮箱,看是否进了收件箱。
按现象排查:审核、验证、接口与投递
发信问题的排查顺序是:接口有没有返回成功,控制台日志里有没有这封信,对方邮箱有没有收到,收到后进了收件箱还是垃圾箱。前两步属于你和服务商之间,后两步属于服务商和收件邮箱之间,对应的处理办法完全不同。先确定卡在哪一步,再对照下面的现象处理。
- 控制台图表空白或一直加载:境外资源访问不畅,确认线路已连上,关闭广告拦截插件;
- SendGrid 显示账号正在审核:按邮件要求补充资料,说明业务与发信场景,审核期间无法正式发信;
- 接口返回 401:API 密钥错误或已被删除,SendGrid 还要确认请求头写成「Authorization: Bearer 密钥」;
- SendGrid 返回 403 并提示发件地址与已验证的身份不匹配:发件地址不在已验证的域名或单个发件人里;
- Mailgun 提示沙盒域名仅供测试:沙盒只能发给在控制台添加过的授权收件人,绑定自有域名后才能正常发信;
- Mailgun 返回 404 或域名不存在:账号在欧盟区,却调用了美国区的接口地址,改用 api.eu.mailgun.net;
- 接口成功但对方收不到:在控制台的活动日志里查这封信的状态,显示「Bounced」是地址无效,显示「Dropped」是该地址此前退过信被列入抑制名单;
- 信进了垃圾箱:SPF、DKIM、DMARC 有一项没配好,或者内容像营销邮件,先补齐 DNS 记录再精简内容。
线路与发信方式怎么选
线路只解决你的开发机访问控制台和文档这一段;正式上线后,服务器调用发信接口是服务器与服务商之间的事,与本地线路无关。如果服务器在国内,调用境外发信接口偶尔会超时,可以把发信放进队列异步重试。用 SMTP 时避开 25 端口,改用 587 或 2525。实际可用性取决于当前网络环境。
| 对比项 | HTTP 接口 | SMTP 中继 | 免费节点调试 | 会员节点调试 |
|---|---|---|---|---|
| 适合环境 | 后端代码、函数 | 老系统、只支持 SMTP 的程序 | 第一次注册与配置 | 日常开发与看日志 |
| 端口 | 443 | 587、465 或 2525 | 不涉及 | 不涉及 |
| 被封风险 | 低 | 部分云服务器封 25 端口 | 不涉及 | 不涉及 |
| 流量规则 | 不涉及 | 不涉及 | 永久免费、不限流量、不限速 | 时长套餐有效期内不限流量、不限速 |
| 调试便利 | 返回明确的错误码 | 错误信息较简略 | 能打开控制台即可 | 长时间调试更稳 |
DNS 记录对照
最常见的坑是 SPF 记录重复:域名原来就有一条企业邮箱的 SPF,又为发信服务新加一条,结果两条都失效。正确做法是把多个 include 写进同一条记录。另一个坑是 SPF 的查询次数上限:一条记录里引用的外部域名层层展开后,总查询次数不能超过十次,接的服务太多时要精简,否则收件方会直接判定 SPF 无效。配置完成后,可以给一个常用邮箱发信,在邮件的「显示原始邮件」里查看 SPF、DKIM、DMARC 三项是否都显示为通过。
| 记录 | 作用 | 配置要点 |
|---|---|---|
| SPF | 声明哪些服务器可以代表你的域名发信 | 一个域名只能有一条 SPF 记录,多家服务合并写 |
| DKIM | 给每封信加数字签名 | 服务商给的 CNAME 或 TXT,原样添加 |
| DMARC | 告诉收件方验证失败时怎么处理 | 先用 p=none 观察,再逐步收紧 |
| 跟踪域名 | 打开率与点击统计 | 可选,CNAME 指向服务商 |
| MX | 接收退信与回复 | Mailgun 收信功能需要,只发信可不配 |
付款、额度与新域名预热
两家的付费方案都按月发信量分档,超出后按量计费或要求升级,绑定的是国际卡,结算币种为美元。升级前先看清楚是否包含独立发信地址,共享地址池的信誉受其他用户影响,量小的项目用共享池就够,每月发信量很大时才值得买独立地址。账单与额度规则以官方最新条款为准。
新域名、新账号不要一上来就大量发信。收件邮箱会观察一个新发件域名的行为,第一天就发几万封,很容易整批进垃圾箱甚至被拒收。比较稳妥的做法是从每天几百封开始,优先发给活跃用户,退信率和投诉率稳定之后再逐周加量。注册验证码这类用户主动触发的邮件打开率高,是建立信誉最好的起点。
和邮件安全、DNS 托管的分工
SPF、DKIM、DMARC 不只是为了提高送达率,它们也是防止别人冒用你的域名发钓鱼邮件的关键,原理与配置建议见 邮件安全指南。域名托管在 Cloudflare 的,DNS 记录添加、代理开关以及用 Workers 写一个小的发信转发函数的方法,见 Cloudflare 控制台与 Workers 使用指南。
一个常见的组合是:DNS 放在 Cloudflare,事务邮件走 SendGrid 或 Mailgun,企业收信用另外的邮箱服务,三者的 SPF 合并成一条记录,DMARC 报告发到一个专门的邮箱定期查看。
常见报错速查表
| 现象 | 原因 | 解决办法 |
|---|---|---|
| 接口返回 401 | 密钥错误或请求头格式错 | 核对密钥与 Bearer 写法 |
| 403 发件人未验证 | 发件地址不在已验证域名 | 完成域名验证或改发件地址 |
| 沙盒域名仅供测试 | 未绑定自有域名 | 添加授权收件人或绑定域名 |
| Mailgun 返回 404 | 欧盟账号调用美国接口 | 改用欧盟区接口地址 |
| 日志显示 Dropped | 地址在抑制名单里 | 确认地址有效后从名单移除 |
| 信件进垃圾箱 | SPF、DKIM、DMARC 缺失 | 补齐记录,精简营销化内容 |
| 域名验证不通过 | CNAME 被 Cloudflare 代理 | 把记录改为仅 DNS |
高频问答
- 问:SendGrid 审核一般要多久?答:通常几个工作日内回复,资料写得越具体越快,以官方处理时间为准;
- 问:能用 Gmail 地址当发件人吗?答:不建议,无法完成域名验证,送达率也差,应使用自己的域名;
- 问:为什么用子域名发信?答:把事务邮件和企业收发信分开,信誉互不影响,出问题也好排查;
- 问:免费额度够用吗?答:小项目的验证码与通知一般够用,额度规则近年常调整,以官方最新条款为准;
- 问:国内服务器能调用接口吗?答:可以调用,但跨境偶尔超时,建议加队列与重试;
- 问:API 密钥泄露怎么办?答:立即在控制台删除该密钥,新建一个只含发信权限的密钥并更新环境变量。
长期稳定发信的做法
SendGrid 与 Mailgun 的问题大多在接入前期:控制台访问靠一条稳定的境外线路,审核如实写清用途,域名验证注意 Cloudflare 的代理开关,接口调用看清地区与请求头,送达率靠完整的 SPF、DKIM、DMARC。上线后定期看退信与投诉率,及时清理无效地址,信誉才会越来越好。退订链接、发件人名称和回复地址这些细节也别省,它们直接影响收件人会不会点「标记为垃圾邮件」。
刺猬VPN 采用 HTTPS+AES 加密传输,自定义用户名和密码即可匿名注册,不需要邮箱和手机号;免费节点永久免费、不限流量、不限速,适合第一次注册与配置域名;时长套餐有效期内不限流量、不限速,适合日常开发与查看发信日志,一个账号支持多设备同时在线,按域名和 IP 的智能分流可以让国内依赖与内网服务继续直连。两家的额度与价格以官方最新条款为准,实际可用性取决于当前网络环境。
换刺猬VPN告别连接烦恼:一键连接、连接稳定
刺猬VPN提供永久免费节点,不限流量;无需邮箱,自定义用户名即可匿名注册。一个账号支持多设备同时在线,实际可用性取决于当前网络环境。