Django实现发送邮件功能
2016-12-24 12:02
309 查看
最近用python写了官网的后台。官网的后台功能比较简单,一个多语言支持,一个联系我们,即给公司发邮件的功能。多语言支持的方式写在另一篇博客了。这里先来说一说Django的发送邮件功能。 其实python本身自带了发送邮件的功能,Django在其基础上进行了封装,使其更加简单易用。仅仅几行代码就可以实现发送邮件的功能。 但是在实际开发的时候,遇到了两个大坑,折腾了3天才真正搞定,在这里做一个简单的记录和梳理,希望能帮其他小伙伴规避这些问题。 使用Django做发送邮件的功能前,首先要有一个支持smtp协议的邮箱并检查设置。**在这里要控诉一下网易邮箱,163和126邮箱,都会强行把你要发送的邮件判定为垃圾邮件,从而阻止发送,所以这里不建议使用。最好使用企业邮箱,付费的真的比较靠谱。**我这里以腾讯企业邮箱作为示范: 1.登陆腾讯企业邮箱,进入设置--客户端设置 2.确认SMTP服务是否开启,如下图: 3.若没有开启,记得开启。然后看设置方法,下边会用到。
然后,要在settings.py文件中配置邮箱相关参数:
# send e-mail EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' #email后端 EMAIL_USE_TLS = False #是否使用TLS安全传输协议 EMAIL_USE_SSL = True #是否使用SSL加密,qq企业邮箱要求使用 EMAIL_HOST = 'smtp.exmail.qq.com' #发送邮件的邮箱 的 SMTP服务器,这里用了qq企业邮箱 EMAIL_PORT = 465 #发件箱的SMTP服务器端口 EMAIL_HOST_USER = 'charleschen@xmdaren.com' #发送邮件的邮箱地址 EMAIL_HOST_PASSWORD = '*********' #发送邮件的邮箱密码
最后,在views.py中制作一个简单的demo邮件并发送:
from django.core.mail import send_mail # send_mail的参数分别是 邮件标题,邮件内容,发件箱(settings.py中设置过的那个),收件箱列表(可以发送给多个人),失败静默(若发送失败,报错提示我们) send_mail('Subject here', 'Here is the message.', 'charleschen@xmdaren.com', ['to@example.com'], fail_silently=False)
如果一切正常,那么邮件发送已经成功了。但是我很蛋疼的遇到了问题,报错显示是语法错误....
大坑注意
我到达上一步的时候,报错显示语法错误,可是一共就几行代码,检查了几遍也没错,怎么回事呢?后来改用python自带的smtp模块发送,一步步调试之后,发现问题在登陆邮箱的时候就失败了。然后在大神的带领下,使用Wireshark软件抓包,发现登陆时,SMTP协议会收取本地计算机名称,在这个名称中,不能包含诸如横杠"-",空格" "等字符,而我的本地计算机名称包含了"-",并且公司的局域网路由器在主机名后边加了带空格的后缀“HDCP HOST”所以导致SMTP协议校验失败。 问题清除之后就好办了,首先修改主机名,然后在设置ip地址的高级设置-DNS中,手动添加一个合法的DNS后缀即可。我这里改为dhcp3
修改之后,发送成功~ 接下来的事情就简单了,在这个基础功能上,优化多邮件发送,还有HTML格式邮件的支持,这些内容都没什么坑,我就不赘述了,大家直接看[自强学堂的教程即可](http://www.ziqiangxuetang.com/django/django-send-email.html) 有时候很简单的功能,也会牵扯到很复杂的问题,或者报错信息很难定位问题,这时候要大胆推测,小心求证,列举各种可能性,一一检查,最后总能搞定的。希望这篇blog能帮你避开大坑。
相关文章推荐
- Python django实现简单的邮件系统发送邮件功能
- Python django实现简单的邮件系统发送邮件功能
- C#实现邮件发送功能
- [ASP.NET]自动发送邮件功能的实现
- 利用邮件对象实现发送QQ日志以及检测用户是否开通SMTP功能
- 教大家修改注册实现注册发送邮件的功能
- 一组实现邮件发送功能的c++封装类(附源码)
- 利用mutt和msmtp实现邮件自动发送功能
- ASP.NET自动发送邮件功能的实现
- 另外一个ASP.NET 实现邮件发送和接受的功能(Sockets)
- 基于Lumisoft.NET实现的邮件发送功能
- JavaMail发送邮件功能实现
- J2EE实现发送邮件功能 推荐
- 如何能够使自己的网站实现发送邮件的功能?
- 网站通过gmail 实现邮件的发送功能
- ASP.NET 实现邮件发送和接受的功能(Mail)
- javaMail Java实现邮件发送,群发功能,java发送邮件
- 编程实现sharepoint工作流中的发送邮件功能(转载)
- ASP.NET自动发送邮件功能的实现
- 教大家修改注册实现注册发送邮件的功能