邮件发送服务 Mailgun 的国内替代品 Hedwi

更新日期: 2020-07-17 阅读次数: 7066 字数: 930 分类: 服务器

之前遇到过俄罗斯服务器上无法通过 SMTP 服务发送邮件的问题,转而尝试:

  • Mailgun 的 http api 发送邮件的解决方案,但是无奈账号直接被 Mailgun 冻结,估计是歧视国内开发者吧。
  • 尝试阿里云邮件服务,遗留的老旧 PHP 环境硬是没调通阿里云 SDK,进而放弃。

后来无奈使用了转发的解决方案。

但是我一直在寻找一个靠谱的邮件发送服务,最好是像 Mailgun 一样简单的 http api,而且不歧视国内开发者的。直到前几天,微信好友 Solos 老板霸道地给我打了 1000 块钱广告费,让我给他的 Hedwi 邮件发送服务加个友链。我才发现原来国内还有这么好用的服务。。。

收红包

我礼貌性地尝试退回广告费,但是 Solos 老板没有收。。。

为什么是 Hedwi 这个奇怪的名字

据 solos 大师说,这个名字来源于哈利波特。。。

海德薇(Hedwig)是《哈利·波特》系列中一只为哈利·波特充当信使的重要宠物

好吧,幼稚!

Hedwi 的优势

  • 支持自定义域名
  • 通过配置 SPF、DKIM、DMARC 记录,提高邮件到达率
  • 每天免费 100 封,超出后每一千封邮件2元。对我来说足够了。
  • http api 的调用方式非常方便,省去了额外开端口的麻烦。俄罗斯那种共用虚拟主机就是一个教训。

崎岖的配置过程

折腾了有一个小时,才把 DNS 配置好 SPF、DKIM、DMARC记录 (为何要配置这三个 DNS 记录,可以参考文末概述,或者查看 Hedwi 的文档)。原因在于一是不了解流程和原理;二是用户引导做的不够完善。实际上只需要5分钟就能配置好,并发送出第一封 Hello World 邮件。

首先,注册 Hedwi 账号,然后在顶部域名菜单 (https://www.hedwi.com/domain) 下添加一个域名,最好是一个二级域名。

邮件发送服务 Mailgun 的国内替代品 Hedwi

然后,点击配置,参考配置页的 DNS 记录,在你的域名解析服务后台,添加对应的服务。例如,阿里云解析,Cloudflare 解析,或者 DNSPod 解析。我用的是 Cloudflare 的解析服务,两分钟就添加完。注意:

  • 这里用的是 TXT 记录来实现的,不要搞错。虽然 cloudflare 支持这三种记录,但是国内的好多服务商不支持,所以除了 MX 记录,其他三个需要用 TXT 记录
  • MX 记录的优先级字段,一个设置为 5,一个设置为 10 就行。代表优先用哪个。

添加完毕之后,点击按钮“检查 DNS 记录”,当状态全部为对号时,表示已经配置完成。

邮件发送服务 Mailgun 的国内替代品 Hedwi

然后就可以发送第一封邮件了。

发送邮件

> curl -s --user 'api:xxx-xxx-xxx-xxx' \
                                   'https://api.hedwi.com/mail/stat.notefeel.com' \
                                   -F from='report@stat.notefeel.com' \
                                   -F to='34334807@qq.com' \
                                   -F subject='Hello 测试报告' \
                                   -F text='Testing email from Hedwi! 报告统计。'
{"code":0,"id":xxx,"message":"queue email successfully","ts":1594956444}⏎

我配置了一个 stat.notefeel.com 的二级域,专门来给我的小程序用户来发送统计报表。测试了一下,确实方便。效果图:

邮件发送服务 Mailgun 的国内替代品 Hedwi

SPF、DKIM、DMARC 这三个 DNS 记录是做什么的?

  • 提高传输的机密性,包括端对端加密: STARTTLS, S/MIME
  • 邮件的身份验证: SPF, DKIM, DMARC

极其枯燥的说明文档: https://juejin.im/post/5e8beeaff265da47cf01ca62

MX 记录的优先级是什么意思

在 cloudflare 上设置 DNS MX 记录解析的时候,需要填写一个优先级字段,是个数值。

MX优先级,用来指定邮件服务器接收邮件的先后顺序,数值越小优先级越高。

  • 当DNS服务器的解析记录中只有一条MX记录时,MX优先级没有意义。
  • 当DNS服务器的解析记录中存在多条MX记录时,邮件发送方的DNS服务器会优先把邮件投递到MX优先级高的邮件服务器。
  • 如果该服务器故障无法接收邮件,邮件发送方的DNS服务器会自动选择下一优先级的邮件服务器投递邮件。

针对 qq 邮件做认证

https://open.mail.qq.com/openmail/openmailhome

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式