Mailgun使用教程
www.mailgun-china.com/fund.html
注册,绑定银行卡,点击邮箱激活,在用户中心上方Domains->Add New Domain添加发邮件的域名,
域名必须符合域名规则,且与发件域名最好保持一致,否则会被当成垃圾邮件来处理。
输入域名新增后,根据Mailgun会给出相应的域名指向教程并给出指向所需**(EnterThisValue)**
然后在域名控制器里按教程设置TXT指向,MX指向,CNAME指向该域名,等待DNS刷新。
等待域名列表里域名状态显示为active后,打开域名详情,
SMTP Hostname为SMTP服务器地址,
Default SMTP Login为SMTP服务器用户名,
Default Password为SMTP服务器密码,
相应的复制到邮箱插件里的SMTP发信设置里,选择端口号为465,安全协议类型为SSl。即可使用。
备注:在Mailgun的用户中心点击用户名下拉选项Account Settings里可以设置发件上限,Custom Message Limit
为自定义发件上限,Public Email Validation Limit为Mailgun提供的邮箱验证服务发件上限(价格昂贵用不上),一般使用自定义发件,设置Custom Message Limit数量,当发件数超过50%和75%时Mailgun会发邮件提醒用户,当超过发件数量时会禁用账户,直到下个月。
使用mailgun实现个人域名的邮件服务
2019-03-22 web 0
这篇文章上次修改于 1519 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
在拥有了自己的网站之后,很多人就想要一个以自己网站域名为后缀的邮件系统。但一个邮件服务器建立的难度远远大于网站本身,而且其稳定性安全性等可能远没有主流邮件服务提供商的好。所以自建服务性价比就很低了。
在不需要在自己服务器上搭建系统的情况下可以使用 mailgun 建立自定义域名邮箱,然后配合支持 SMTP 的主流邮件服务商间接实现了我们的目的。
The Email Service For Developers
Powerful APIs
that enable you to send, receive and track email effortlessly.
10,000 emails free every month.
website: www.mailgun.com/
mailgun注册及自定义域名
在其官网点击 sign up 注册账户,注意最好使用主流且支持第三方 SMTP 的邮箱来注册。
注册账户后访问管理页面
点击右侧 messages,里面有个 mailgun 自动为你创建一个默认 domain,当然我们需要自己加入自己的域名,点击 add new domain
进入此界面输入你的个人域名,他会推荐你使用二级域名,但是你可以直接用顶级域名,下面的选项保持默认即可:
如果你的域名不是主流的后缀,如: .com .net 等,当你确认 add domain 后会提示此域名是 disabled,此时你需要发一个 ticket 来要求解除限制,途径是点击左侧的 support 选项里的 create ticket:
完成域名的添加后,开始添加 DNS 解析,点击你的域名进入 settings -> DNS records
下方会有五个需要你添加到你的域名解析你的记录:2条 TXT, 2条 MX, 1条 CHAME
根据提示将上述5条记录加入你的域名解析里,注意如果你使用了第三方 CDN 服务商的 NS 服务,需要将 CHAME 记录走直连。
完成解析后,点击 check DNS records Now 验证是否正确。如果每条记录前都是绿色勾就表示解析配置完成。
新建 SMTP credential,如果只是收邮件的话不需要任何 SMTP,这里是配置发件账户。点击 new SMTP user 建立你喜欢的名字,如:maser@youdomain,mailgun 要求 user 至少大于5个字符。建立后会自动生成密钥且只显示一次,这里建议及时去支持 SMTP 的邮件提供商哪里添加此账户。
开始配置 routes,这里就是配置邮件转发,默认会创建一条将所有邮件转发到注册账户的邮箱的 route,这一条 route 已经完成了我们的需求,可以根据需求添加其他 routes。
完成以上配置后,基本就可以使用自定义域名的邮件服务了,收件地址可以是任意的,只要是@youdomain的地址都会接收。发件地址只能是 SMTP 配置你的users。
mailgun一个强大且适合开发者使用的(群)发邮件服务
mailgun一个开发人员的电子邮件服务,强大的API,使您能够轻松发送,接收和跟踪电子邮件。
每个月可免费发送10000封邮件,可以添加1000个域名,每封邮件都有跟踪日志,简单明了的管理界面。
官网
注册步骤
1) 访问地址 app.mailgun.com/new/signup/
填写相关信息,点击注册。
关于信用卡可以使用之前提到的免费信用卡来验证。
2)注册成功后,到需要到注册邮箱点击验证链接。需要验证手机号码。
3)验证成功后,就可以使用了。特别要注意,新注册的用户有发件速度限制。
您的帐户正在试用期,域名限制为100封/小时。 如果您继续发送良好的流量,该限制将被删除。
添加域名
注册成功后,我们来添加自己的域名。
1)访问地址 app.mailgun.com/app/domains…
填写要绑定的域名,然后点击添加。
本文演示域名位 mailgun.somecolor.cc
注意域名需要独立解析才可以。如果这里要绑定二级或者三级域名。请先参考文章:二级域名如何实现NS的独立解析
2)点击添加后,页面显示要解析的内容。
有TXT 、MX、CNAME,按照提示依次添加解析。
3)解析添加完成,然后验证一下。验证成功后,就可以看见关键的信息了。
有的运营商生效可能比较慢。
4)通过CURL 发送邮件到 163邮箱。速度非常快,但是进垃圾箱。
替换自己的API KEY 试一试。
注意:QQ邮箱可能无法接收或者接收速度非常慢。后面我们介绍一下。
#复制你的API KEY 、API Base URL、 FROM EMAIL
curl -s --user 'api:key-a5b555827e4a134623c5caxxxxx' \
https://api.mailgun.net/v3/mailgun.somecolor.cc/messages \
-F from='Mailgun Sandbox <postmaster@sandboxed092a69c6d645b8a7c204427fc0a681.mailgun.org>' \
-F to='ma <xxxxx@163.com>' \
-F subject='Hello ma' \
-F text='Congratulations ma, you just sent an email with Mailgun! You are truly awesome!'
演示代码
mailgun 强大的地方就是API。官网首页推荐语就是 :The Email Service For Developers
其官网的文档有详细的介绍。
有兴趣可参阅: documentation.mailgun.com/api_referen…
以下是官方给的示例代码,支持目前主流的开发语言。
直接替换你的API KAY / API Base Url 等信息即可使用了。
CURL
# Try our API. Copy & run this in your terminal.
curl -s --user 'api:key-3ax6xnjp29jd6fds4gc373sgvjxteol0' \
https://api.mailgun.net/v3/samples.mailgun.org/messages \
-F from='Excited User <excited@samples.mailgun.org>' \
-F to='devs@mailgun.net' \
-F subject='Hello' \
-F text='Testing some Mailgun awesomeness!'
Python
# Try running this locally.
def send_simple_message():
return requests.post(
"https://api.mailgun.net/v3/samples.mailgun.org/messages",
auth=("api", "key-3ax6xnjp29jd6fds4gc373sgvjxteol0"),
data={"from": "Excited User <excited@samples.mailgun.org>",
"to": ["devs@mailgun.net"],
"subject": "Hello",
"text": "Testing some Mailgun awesomeness!"})
PHP
# Try running this locally.
# Include the Autoloader (see "Libraries" for install instructions)
require 'vendor/autoload.php';
use Mailgun\Mailgun;
# Instantiate the client.
$mgClient = new Mailgun('key-3ax6xnjp29jd6fds4gc373sgvjxteol0');
$domain = "samples.mailgun.org";
# Make the call to the client.
$result = $mgClient->sendMessage("$domain",
array('from' => 'Excited User <excited@samples.mailgun.org>',
'to' => 'Mailgun Devs <devs@mailgun.net>',
'subject' => 'Hello',
'text' => 'Testing some Mailgun awesomeness!'));
GO
参考开源项目:github.com/mailgun/mai…
Nodejs
参考开源项目:github.com/mailgun/mai…
推荐插件
QQ邮箱拒收
网上有好多人吐槽发送给QQ邮箱的邮件直接被拒收。www.v2ex.com/t/331526
发送邮件时提醒如下: ESP throttling: postmaster@mailgun.somecolor.cc → xxxxx@qq.com 'Hello ma' Server response: 550 Ip frequency limited. service.mail.qq.com/cgi-bin/hel…
产生原因
由于mailgun 共享IP发送给QQ邮箱的邮件太多。QQ邮箱直接全部拒收。而网易邮箱处理方式是直接进垃圾箱。
解决方案
- 买固定IP,然后向腾讯买IP白名单。
- QQ的邮箱直接使用其他服务发邮件(看下文其他免费服务)。
- mailgun 对于发送失败的邮件会自动重新发送,等到0点后,QQ就能收到邮件了。
其他同类服务
Amazon SES 免费套餐,月发送 62000 封电子邮件。
aws.amazon.com/cn/ses/pric… 阿里云邮件推送服务,每个账户每日200封免费邮件。
www.aliyun.com/product/dir… SendCloud 搜狐旗下付费服务
sendcloud.sohu.com MandRill 付费服务 www.mandrill.com/pricing/ SendGrid 免费试用30天 30天试用,能免费发送40000封邮件 sendgrid.com Postmark 免费试用 postmarkapp.com/pricing
本文参考文献:
http://www.tuicool.com/articles/mAFV7f
mailgun ——10000封每月的邮件推送接口
近期接触了一两个接口,一个是twilio短信推送接口,另一个是mailgun的邮件推送接口。
两个网站都在国外,如果在国内直接注册的话会不成功,原因是需要人机验证。 需要科学上网才能弹出人机验证的小窗体。 www.twilio.com/ twilio 上一篇
www.mailgun.com/ mailgun 本篇
两个网站都是 一步一步注册,碰到一些需要行用卡的地方直接跳过即可。不影响后续的接口调试。
但是如果之后需要应用到正式环境,那么付款等信息还是需要注册的。
同样的注册的教程网上有很多,在这里就不写了。
注册完成后:
当信息全部填写完成后,你就得到了一个沙盒实例。也就是上图中的红框部分。
点击进入。
然后按照1234的步骤一个一个点击后,会找到生成的api_key和DOMAIN信息。
按照道理这样就可以使用接口发送邮件了。
但是,mailgun 现在提供的是一个沙盒账号。不允许随意发送其他人邮件。
就算发送了之后也会报错。
错误信息告诉我们要么使用信用卡注册、使用自己的网址信息,或者把我们想要发送的邮箱添加到 授权收件人(authorized recipients)中去。
在红框中输入想要添加的邮箱地址。添加了之后,mailgun会发送一个验证邮件到邮箱中。需要科学上网验证后,才能使用。
图中我已经添加了两个邮箱。
调用 和twilio一样,官网上还贴心了给出了不同语言的API接口和说明文档。
nodejs接口: 安装库:
cnpm install --save mailgun-js
安装完成后:
var API\_KEY = '你的api\_key';
var DOMAIN = '你的domain';
var mailgun = require('mailgun-js')({ apiKey: API\_KEY, domain: DOMAIN });
const data = {
from: 'Excited User <me@samples.mailgun.org>',
to: '已授权的邮箱1, 已授权的邮箱2',
subject: 'Hello',
text: 'Testing some Mailgun awesomeness!'
};
mailgun.messages().send(data, (error, body) => {
console.log(body);
});
这是官网的样例。把里面的东西换成自己的时候,直接调用就行了。
如果成功,返回值:id 和message;如果成功,返回对应的错误信息。
发送完成后也可以接受回复的邮件,在本篇文章中没有写出。后续如果有需要,或者我自己用到了之后,我再填坑好了。
首页上也能看到刚才发送成功的邮件。我刚新注册了个账号,发送了两封,下面还有数量显示2 /10K。
blog.csdn.net/guyang1995/…
本方案采用 Gmail + mailgun 方案
Mailgun 每个月可以免费发送10000封邮件,不过个人来讲通常都用不完吧,其次现在需要添加付款信息(信用卡(银联既可)),否则无法添加自定义域名
1. 首先前提当然要有个域名,域名这个没有的就先去注册个再来
2. 注册 mailgun.com
1. 注册后激活帐号(随便找个手机号验证)
2. 因为 Mailgun 不添加付款信息(信用卡) 无法添加自己的域名,所以如果注册的时候没填,进面板后在 Settings - Details 下 填写
3. 然后添加域名
填入你自己的域名
注:此处完全可以输入firerain.me, 然后他就会提示We highly recommend using a subdomain. For more information, check out our FAQ.,不用管
然后根据提示在你的DNS服务商处添加,以
cloudflare为例
最后点最下面的按钮验证
4. 创建 Router
Forward 下的邮箱填写你自己的 Gmail 邮箱
5. 创建 SMTP User
然后输入你要的用户名,创建成功后右上角会提示一个密码,这个很重要(用于下一步验证),复制
6. 添加 Gmail 别名邮箱
进入 Gmail设置 账号设置页面,点击添加其他电子邮件地址
名称填你想要的,然后电子邮件就是刚创建的
SMTP User@你的域名
SMTP 服务器填smtp.mailgun.org,用户名为SMTP User@你的域名,密码就是上一步复制的密码,然后点添加帐号
7. 验证添加的邮箱
如一切顺利的话,Gmail 发送的邮件会发送到 你的 Gmail 里,然后点开验证完事
邮件发送服务 Mailgun 的国内替代品 Hedwi
之前遇到过俄罗斯服务器上无法通过 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 账号,然后在顶部域名菜单 (www.hedwi.com/domain) 下添加一个域名,最好是一个二级域名。
然后,点击配置,参考配置页的 DNS 记录,在你的域名解析服务后台,添加对应的服务。例如,阿里云解析,Cloudflare 解析,或者 DNSPod 解析。我用的是 Cloudflare 的解析服务,两分钟就添加完。注意:
- 这里用的是 TXT 记录来实现的,不要搞错。虽然 cloudflare 支持这三种记录,但是国内的好多服务商不支持,所以除了 MX 记录,其他三个需要用 TXT 记录
- MX 记录的优先级字段,一个设置为 5,一个设置为 10 就行。代表优先用哪个。
添加完毕之后,点击按钮“检查 DNS 记录”,当状态全部为对号时,表示已经配置完成。
然后就可以发送第一封邮件了。
发送邮件
> 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 的二级域,专门来给我的小程序用户来发送统计报表。测试了一下,确实方便。效果图:
SPF、DKIM、DMARC 这三个 DNS 记录是做什么的?
- 提高传输的机密性,包括端对端加密: STARTTLS, S/MIME
- 邮件的身份验证: SPF, DKIM, DMARC
极其枯燥的说明文档: juejin.im/post/5e8bee…
MX 记录的优先级是什么意思
在 cloudflare 上设置 DNS MX 记录解析的时候,需要填写一个优先级字段,是个数值。
MX优先级,用来指定邮件服务器接收邮件的先后顺序,数值越小优先级越高。
- 当DNS服务器的解析记录中只有一条MX记录时,MX优先级没有意义。
- 当DNS服务器的解析记录中存在多条MX记录时,邮件发送方的DNS服务器会优先把邮件投递到MX优先级高的邮件服务器。
- 如果该服务器故障无法接收邮件,邮件发送方的DNS服务器会自动选择下一优先级的邮件服务器投递邮件。
针对 qq 邮件做认证
了解电子邮件发送的 DNS 设置 (MailGun)
视频笔记
以下是对使用MailGun等电子邮件发送服务配置域时创建的各种 DNS 记录的解释。这些说明特定于 MailGun 设置,但相同的一般概念适用于其他电子邮件服务(SendGrid、Amazon SES 等)
上面的视频和这些注释解释了记录的细节;如果您只想了解如何快速设置它们,请查看此视频... )
** 为什么要使用子域?
建议您mail.yourdomain.com在配置 MailGun 时使用子域(例如 ),因为它有助于提高电子邮件的送达率和声誉。当您使用子域时,它会将您的电子邮件发送信誉与您的根域分开。这意味着,如果您在电子邮件送达率方面遇到任何问题,都不会影响您主域的声誉。
此外,使用子域配置电子邮件发送服务可以更轻松地管理您的电子邮件发送,因为您可以跟踪您的电子邮件指标并管理您的电子邮件设置,与您的主域分开。
请注意,即使您使用子域配置内容,您仍然可以从根域(例如you@mydomain.com.
** DNS 记录
以下是用于配置电子邮件发送服务的典型 DNS 记录的说明。该示例特定于 MailGun,但相同的一般思想适用于其他服务,例如 SendGrid、Amazon SES 等。
** 发送记录
记录 1包含SPF(发件人策略框架) 记录,用于向接收邮件服务器验证您的发送服务器(在此示例中为 MailGun)是否有权代表您的域发送电子邮件。
记录 2是DKIM(域密钥识别邮件) 记录,用于验证电子邮件发件人的身份并验证邮件在传输过程中未被更改。该记录的内容包含一个特殊密钥,该密钥将与随您所有外发 MailGun 电子邮件一起发送的数字签名一致。收到您的电子邮件后,收件人的电子邮件服务器将从您的 DNS 设置中检索密钥,并检查它是否与电子邮件中的数字签名匹配。如果匹配,收件人的电子邮件服务器就可以确信邮件在传输过程中没有被更改,并且是由指定域的授权发件人发送的。
通过将 DKIM 记录添加到您域的 DNS 配置,您可以帮助防止电子邮件欺骗并保护您的域声誉,防止您的电子邮件进入垃圾邮件文件夹。
** 接收记录
记录 3 和 4是特定于通过 MailGun接收电子邮件的 MX(邮件交换)记录(相对于以上两个特定于发送电子邮件的记录)。
如果您想在接收电子邮件的服务器上进行某种处理,您可能会通过 MailGun 接收电子邮件。例如,假设您想举办一场比赛,用户可以在其中通过电子邮件发送提交内容,并且您希望这些提交内容由您的服务器处理,以便将每个提交内容添加到数据库中,并自动向用户发送一封确认收到的电子邮件。
如果您还没有指向另一个服务器(例如 Gmail)的现有 MX 记录,您应该只设置这些 MX 接收记录。因为您可能为 MailGun 设置了一个特定的子域,所以这不应该是一个问题。
建议您设置这些记录,即使您不打算通过 MailGun 接收电子邮件,因为为您的域设置 MX 记录可以提高电子邮件的送达率,因为它有助于与电子邮件收件人的服务器建立信任。
** 跟踪记录
记录 5是CNAME(规范名称) 记录,用于创建从一个域到另一个域的别名。在这种情况下,您将在您的域 ( ) 的子域email.mail.yourdomain.com和 MailGun 的域 ( mailgun.org) 之间创建一个别名。
当您通过 Mailgun 发送电子邮件活动时,系统会自动将电子邮件中的链接替换为指向您的跟踪子域的链接,并且当收件人单击这些链接时,请求将别名(通过 CNAME)到 MailGun 的域/服务器,其中可以跟踪点击次数。