51uwb.cn

标题: Django 使用Mailgun 发送mail [打印本页]

作者: admin    时间: 2018-1-14 19:28
标题: Django 使用Mailgun 发送mail
Mailgun 是一个免费的邮件发送服务器,我这样定义它,自己的服务器上就不用搭建邮件服务器了,有些主机供应商是不同意在他的主机上不允许搭建的。


闲话不多说,按照《python 新手使用Django架站的16堂课》 搭建失败,提示 No module named packages.urllib3.filepost  


Google学习,不用书中所谓的django-mailgun这个应用了,使用开源的anymail :https://github.com/anymail/django-anymail
按照提示安装配置
  1. $ pip install django-anymail[mailgun]
复制代码
具体setting配置
  1. INSTALLED_APPS = [
  2.     # ...
  3.     "anymail",
  4.     # ...
  5. ]

  6. ANYMAIL = {
  7.     # (exact settings here depend on your ESP...)
  8.     "MAILGUN_API_KEY": "key-XXXXXXXXXXX",
  9.     "MAILGUN_SENDER_DOMAIN": bphero.com.cn',  # your Mailgun domain, if needed
  10. }
  11. EMAIL_BACKEND = "anymail.backends.mailgun.EmailBackend"  # or sendgrid.EmailBackend, or...
  12. DEFAULT_FROM_EMAIL = "you@example.com"  # if you don't already have this in settings  -->这个我没有配置
复制代码


在使用mailgun中,我自己用来我的域名bphero.com.cn,没有用默认给定的域名
(, 下载次数: 608)
关于添加域名方法:https://app.mailgun.com/app/domains/bphero.com.cn/verify
按照网页提供的方法设定TXT 和 CNAME,而MX 是推荐设定,我没有设定。 这些设定需要到域名服务商设定,我用的Godday 上设定的,设定完,点击verify,很快就OK了


然后在Django 代码里添加发送mail函数,参考git
  1. from django.core.mail import send_mail

  2. send_mail("It works!", "This will get sent through Mailgun","Anymail Sender <admin@bphero.com.cn>", ["XXX@example.com"])
复制代码
说明一下各个字段的作用: “It works!” 邮件的标题
                                       “This will get sent through Mailgun" 邮件内容
                                       "Anymail Sender <admin@bphero.com.cn>" 发件人,Anymail 和admin 都可以修改,后面的域名bphero.com.cn 不可以修改
                                       ["XXX@example.com"]  收件人邮件地址。
方式调试发现无法发送出去,错误提示:
  1. Free accounts are for test purposes only. Please upgrade or add the address to authorized recipients in Account Settings
复制代码
在mailgun 里也可以看到log信息如下
(, 下载次数: 387)
这个原因是我们申请的是免费账号,收件人需要提前认证,我们不能随意发送给任何人,需要先把收件人的mail地址设定在mailgun中
具体方法是在accout 中增加
(, 下载次数: 391)
(, 下载次数: 387)
如上图所示的方法,我增加了两个邮件地址,最多可以增加5个,每当设定一个邮件地址,mailgun 都会发送一个mail到该地址请求确认,只有确认后,才是设定成功。


上面的方法都处理完后,直接Django里的代码,这次终于发送成了
(, 下载次数: 401)
其它说明:Mailgun 注册对IP 进行屏蔽,我是扶墙后才注册成功的










作者: lyuanc    时间: 2022-4-16 01:16

感谢楼主分享感谢楼主分享,学习一下




欢迎光临 51uwb.cn (http://51uwb.cn/) Powered by Discuz! X3.3