由于工作需要,搭建了一个网站,现在需要为网站添加邮件服务,网站的开源框架使用的是免费的 Mailgun 邮件服务,于是学习了一下。

准备工作

Namecheap 域名(yourdomain.com)
VPS 主机(IP:xx.xx.xx.xx)
Mailgun 账户(官网申请

本文的前提环境是:读者已经搭建好了网站,并能正常访问

添加 Mailgun 域名

首先在 Mailgun 官网上添加一个新的域名(mail.yourdomain.com),根据提示一步步添加完成。然后打开刚刚添加的域名,根据Domain Verification & DNS的信息提示将对应的 DNS 纪录添加到 Namecheap 中。(红色部分即为主域名:yourdomain.com)

mail.yourdomain.com
mail.yourdomain.com

添加 Namecheap DNS 纪录

在 Namecheap 官网上打开自己的域名管理页面,选择相应的域名(yourdomain.com),然后在Advanced DNS面板里添加 Mailgun 显示的纪录。

Namecheap
Namecheap

Mailgun 验证

最后,在 Mailgun 上验证自己的 DNS 纪录。在Domain Verification & DNS下点击Check DNS Records Now,如果配置正确,就可以看到TXT recordsCNAME recordMX records都显示绿色。此时,在 Domain Information 下的 State 变为绿色的 Active。

邮件测试

邮件发送

下面是 Python 下测试邮件发送代码:

# encoding = utf-8
from pip._vendor import requests


def send_simple_message():
    return requests.post(
        "https://api.mailgun.net/v3/YOUR_DOMAIN_NAME/messages",
        auth=("api", "YOUR_API_KEY"),
        data={"from": "Excited User <mailgun@YOUR_DOMAIN_NAME>",
              "to": ["[email protected]", "YOU@YOUR_DOMAIN_NAME"],
              "subject": "Hello",
              "text": "Testing some Mailgun awesomness!"})


if __name__ == "__main__":
    print "Hello"
    print send_simple_message()
    print "End"

测试结果,查看打印:

Hello
<Response [200]>
End

如果 Response 返回码为 200 说明发送成功,即可在收件箱里查看。

邮件接收

Mailgun 对于收到的邮件可以设置转发,在 Routes 选项卡下面可以添加自定义规则。

forword
forword

Mailgun 常见 HTTP 响应码

Code Description
200 Everything worked as expecte
400 Bad Request - Often missing a required parameter
401 Unauthorized - No valid API key provided
402 Request Failed - Parameters were valid but request failed
404 Not Found - The requested item doesn’t exist
500, 502, 503, 504 Server Errors - something is wrong on Mailgun’s end

参考文章

  1. Setup MailGun on NameCheap: SPF, DKIM, CNAME and MX
  2. Mailgun + DigitalOcean
  3. Mailgun Quickstart Guide