Django搭配anymail去发送邮件

注册mailgun账号

首先登陆https://app.mailgun.com/sessions/new 里注册一个账号,填写邮件和密码点击注册,会出现这样的页面:
akb48

然后在注册的邮件会接到两个邮件,一个是API的邮件,另一个是激活账号邮件,如下:
akb48

点击激活之后,就要添加可信任邮箱,mailgun只能对这些可信任邮箱发送邮件,其他邮件就会失败,在Account里选择Authorized Recipients,然后Invite new Recipients创建新的守信邮箱,创建完毕之后,邮箱应该是Unverified的状态,如下:
akb48

点击那个Unverified的状态的邮箱,如果你的机器有装foxmail或者outlook的话,就会自动弹出来,你就可以发送一个邮件到指定的邮箱里,不久邮箱就会收到一个确认信,如下:
akb48

点击I agree即完成授信,邮箱状态也变成了绿色的Verified

点击Domains就可以看到账号的apidomain了,如图:
akb48

至此,邮箱账号申请部分完成。

开始配置

首先安装pip install django-anymail组件,并且在setting.py里添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
INSTALLED_APPS = [
...
"anymail",
...
]

ANYMAIL = {
"MAILGUN_API_KEY": "这里填写API",
"MAILGUN_SENDER_DOMAIN": '这里填写domain',
}
EMAIL_BACKEND = "anymail.backends.mailgun.EmailBackend"
# DEFAULT_FROM_EMAIL = "you@example.com" # if you don't already have this in settings
# SERVER_EMAIL = "your-server@example.com" # ditto (default from-email for Django errors)

保存退出之后,在views.py里添加如下信息:

1
2
3
4
from django.core.mail import send_mail

#只需一个send_mail 函数,便能发送邮件
send_mail("It works!这里是标题", "This will get sent through Mailgun,这里是内容","domian的内容,即上面图片里那个mailgun.org结尾的东西", ["授信的邮箱地址"])

保存之后,django会自动重启,就会看到邮件顺利发出去了!
akb48

可以看出只需要一个send_mail就能发送邮件,的确比SMTP方便多了。在实际运用中,就把send_mail放到对应的函数里,然后灵活搭配标题和内容就能使用了!

故障排错

  1. 如果出现Please activate your Mailgun account. Check your inbox or log in to your control panel to resend the activation email.,即账号没激活;
  2. 如果出现Sandbox subdomains are for test purposes only. Please add your own domain or add the address to authorized recipients in Account Settings.,即目标邮箱不是授信邮箱,需要添加到授信名单里。

参考资料

https://github.com/anymail/django-anymail

感谢您请我喝咖啡~O(∩_∩)O,如果要联系请直接发我邮箱chenx1242@163.com,我会回复你的
-------------本文结束感谢您的阅读-------------