美文网首页
Django实现发送邮件功能

Django实现发送邮件功能

作者: 阡陌3536 | 来源:发表于2017-10-01 18:28 被阅读0次

最近用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邮件并发送:

fromdjango.core.mail import send_mai

l# 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

http://blog.csdn.net/creabine/article/details/53857826

相关文章

  • 使用django发送邮件

    django通过封装python的smtplib实现发送邮件功能。django 1.11官网翻译内容见:http:...

  • 2018-07-17

    发送邮件 django中内置了邮件发送功能,被定义在django.core.mail模块中,发送邮件需要使用SMT...

  • smtp服务器开启

    发送邮件 Django中内置了邮件发送功能,被定义在django.core.mail模块中。发送邮件需要使用SMT...

  • Django实现发送邮件功能

    最近用python写了官网的后台。官网的后台功能比较简单,一个多语言支持,一个联系我们,即给公司发邮件的功能。多语...

  • Django笔记:邮件发送

    Django有一系列内置的模块,提供了多种邮件发送的方法。在实现邮件发送功能之前,需要对邮箱进行相关配置。以QQ邮...

  • Django——发送邮件和缓存

    发送邮件 概述:Django 中内置了邮件发送功能,发送邮件需要使用 SMTP服务,常用的免费服务器有:163、1...

  • Django 邮件发送功能

    django对smtplib这个这模块进行封装,使得它使用起来十分简单。django.core.mail就是dja...

  • django发送邮件与获取ip

    发送邮件 博客想做一个评论时收到收件的功能,方便得知最新动态,在django下简单配置下就能实现。 django获...

  • Python库-zmail

    zmail可实现发送邮件与获取你邮件信息的功能

  • 关于python smtplib在linux上发送邮件失败解决办

    在上线django 项目遇到在本地window系统可以实现正常的邮件发送,但部署到centos7上的时候,邮件发送...

网友评论

      本文标题:Django实现发送邮件功能

      本文链接:https://www.haomeiwen.com/subject/mieaextx.html