51uwb.cn

 找回密码
 立即注册
查看: 16431|回复: 1
打印 上一主题 下一主题

Django 使用Mailgun 发送mail

[复制链接]

22

主题

55

帖子

848

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
848
跳转到指定楼层
楼主
发表于 2018-1-14 19:28:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
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,没有用默认给定的域名

关于添加域名方法: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信息如下

这个原因是我们申请的是免费账号,收件人需要提前认证,我们不能随意发送给任何人,需要先把收件人的mail地址设定在mailgun中
具体方法是在accout 中增加


如上图所示的方法,我增加了两个邮件地址,最多可以增加5个,每当设定一个邮件地址,mailgun 都会发送一个mail到该地址请求确认,只有确认后,才是设定成功。


上面的方法都处理完后,直接Django里的代码,这次终于发送成了

其它说明:Mailgun 注册对IP 进行屏蔽,我是扶墙后才注册成功的









回复

使用道具 举报

0

主题

27

帖子

53

积分

注册会员

Rank: 2

积分
53
沙发
发表于 2022-4-16 01:16:04 | 只看该作者

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

bphero Inc.  

GMT+8, 2024-11-22 11:50 , Processed in 0.013479 second(s), 6 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表