在阅读 laravel 文档的时候,发现邮件发送模块的多个 driver 中, mailgun 是排第一的,好奇心作祟,决定尝试使用一下。

注册、激活

邮箱注册,邮箱激活,基本操作不再赘述。
邮箱激活成功后,会提示进行 upgrade 到付费版。 账号状态据我所知,有以下3种:

  • 不进行 upgrade 且不绑定信用卡,仅可以使用 sandbox domain,且指定邮箱发送,一个月 5k 免费发送
  • 不进行 upgrade 但绑定了信用卡,可以新增 domain ,一个月 5k 条免费发送
  • 付费,想干嘛干嘛,您就是 mailgun 的爹

信用卡绑定

信用卡绑定的表单里,有一项是要求填写 address line 1 ,特地去查了一下,是指信用卡开户的时候填写的地址, line 1 是因为国外的地址都是分行的, line 1 是我们这边的说法就是 “精确到门牌号”

我是使用了招商银行的信用卡, address line 1 我用拼音简单描述了开户填的地址,而且没有填全,提交后秒通过,所以基本可以认为这一列是人工审核用的,提交的时候仅用于存储,填写的时候可以不用太过精确,大概就差不多(应该吧

新增 domain

在左边的导航栏,找到 domain ,然后按照指示新增。
接着官方会给出指南,让你到 DNS解析中进行设置,验证你的 domain 归属于你。 只要您准确无误的设置完所有的 DNS 解析记录, 然后点击一下最下方的 verify 按钮,程序会进行检测并标出错误的项目。
亲测偶尔程序会误判,需要多手动重试几次,直到全部绿灯。

DNS设置示例

使用

mailgun 的指引真的可以,点击进去 sandbox domain 中,已经给出完整的可以直接复制粘贴使用的demo,十分的方便。
我个人还没有特别注意 HTTP API和SMTP之间使用上的区别,但是我认为 HTTP API是最方便、最直观、最可控的途径,所以在此推荐使用 HTTP API

如果你是用 laravel 或者 lumen ,可以参考我下面这个 demo, 跟着 readme 简单部署即可使用
https://github.com/Lichmaker/mail-service

遇到的问题

  • 只有 5k
    其实免费的 5k,一般都够用了,除非你要拿去撒网发广告
  • 无法避免的垃圾邮件问题
    可能是因为 mailgun 的服务器分配问题,我在网上搜索都是多派言论,有的是 qq 邮箱进垃圾箱,有的是 Google 进垃圾箱,有的是 Outlook。

我亲测试 Google 进了邮箱,刚开始查阅到资料,跟 DNS 解析中的 MX 记录有关,我多次修改 MX 记录并重试,即使改到跟发件邮箱一致,也都无法解决问题。 初步猜测是发邮件的服务器因为是 mailgun 内部共享的,其他用户发了大量垃圾广告,所以你的邮件就被误杀了
这个问题基本暂时无解,因为免费用户也没法跟官方提供单,只能默默忍受。