Python django实现简单的邮件系统发送邮件功能


Posted in Python onJuly 14, 2017

本文实例讲述了Python django实现简单的邮件系统发送邮件功能。分享给大家供大家参考,具体如下:

django邮件系统

Django发送邮件官方中文文档

总结如下:

1、首先这份文档看三两遍是不行的,很多东西再看一遍就通顺了。
2、send_mail()、send_mass_mail()都是对EmailMessage类使用方式的一个轻度封装,所以要关注底层的EmailMessage。
3、异常处理防止邮件头注入。
4、一定要弄懂Email backends 邮件发送后端
5、多线程的邮件发送。

个人简单配置如下:

首先是settings.py文件

#settings.py
#邮件配置
EMAIL_HOST = 'smtp.gmail.com'          #SMTP地址
EMAIL_PORT = 25                 #SMTP端口
EMAIL_HOST_USER = 'pythonsuper@gmail.com'    #我自己的邮箱
EMAIL_HOST_PASSWORD = '******'         #我的邮箱密码
EMAIL_SUBJECT_PREFIX = u'[CoorCar网]'      #为邮件Subject-line前缀,默认是'[django]'
EMAIL_USE_TLS = True               #与SMTP服务器通信时,是否启动TLS链接(安全链接)。默认是false
#管理员站点
SERVER_EMAIL = 'xinxinyu2011@163.com'      #The email address that error messages come from, such as those sent to ADMINS and MANAGERS.

这里推荐:各大型邮箱smtp服务器及端口收集

各大型邮箱smtp服务器及端口收集:

新浪邮箱smtp服务器
外发服务器:smtp.vip.sina.com
收件服务器:pop3.vip.sina.com
新浪免费邮件
外发服务器:smtp.sina.com.cn
收件服务器:pop3.sina.com.cn
163邮箱smtp服务器
pop: pop.163.com
smtp: smtp.163.com
QQ邮箱smtp服务器及端口
接收邮件服务器:imap.exmail.qq.com,使用SSL,端口号993
发送邮件服务器:smtp.exmail.qq.com,使用SSL,端口号465或587
yahoo邮箱smtp服务器
接:pop.mail.yahoo.com.cn
发:smtp.mail.yahoo.com
126邮箱smtp服务器
pop: pop.126.com
smtp: smtp.126.com
新浪免费邮箱
POP3:pop.sina.com
SMTP:smtp.sina.com
SMTP端口号:25
新浪VIP邮箱
POP3:pop3.vip.sina.com
SMTP:smtp.vip.sina.com
SMTP端口号:25
新浪企业邮箱
POP3:pop.sina.com
SMTP:smtp.sina.com
SMTP端口号:25
雅虎邮箱
POP3:pop.mail.yahoo.cn
SMTP:smtp.mail.yahoo.cn
SMTP端口号:25
搜狐邮箱
POP3:pop3.sohu.com
SMTP:smtp.sohu.com
SMTP端口号:25
TOM邮箱
POP3:pop.tom.com
SMTP:smtp.tom.com
SMTP端口号:25
Gmail邮箱
POP3:pop.gmail.com
SMTP:smtp.gmail.com
SMTP端口号:587 或 25
QQ邮箱
POP3:pop.exmail.qq.com
SMTP:smtp.exmail.qq.com
SMTP端口号:25
263邮箱
域名:263.net
POP3:263.net
SMTP:smtp.263.net
SMTP端口号:25
域名:x263.net
POP3:pop.x263.net
SMTP:smtp.x263.net
SMTP端口号:25
域名:263.net.cn
POP3:263.net.cn
SMTP:263.net.cn
SMTP端口号:25
域名:炫我型
POP3:pop.263xmail.com
SMTP:smtp.263xmail.com
SMTP端口号:25
21CN 免费邮箱
POP3:pop.21cn.com
SMTP:smtp.21cn.com
IMAP:imap.21cn.com
SMTP端口号:25
21CN 经济邮邮箱
POP3:pop.21cn.com
SMTP:smtp.21cn.com
SMTP端口号:25
21CN 商务邮邮箱
POP3:pop.21cn.net
SMTP:smtp.21cn.net
SMTP端口号:25
21CN 快感邮箱
POP3:vip.21cn.com
SMTP:vip.21cn.com
SMTP端口号:25
21CN Y邮箱
POP3:pop.y.vip.21cn.com
SMTP:smtp.y.vip.21cn.com
SMTP端口号:25
中华网任我邮邮箱
POP3:rwpop.china.com
SMTP:rwsmtp.china.com
SMTP端口号:25
中华网时尚、商务邮箱
POP3:pop.china.com
SMTP:smtp.china.com
SMTP端口号:25

那么发送邮件如下:

def setEmail(request):
  if request.method == "POST":
#    方式一:
#     send_mail('subject', 'this is the message of email', 'pythonsuper@gmail.com', ['1565208411@qq.com','1373763906@qq.com'], fail_silently=True)
#    方式二:
#     message1 = ('subject1','this is the message of email1','pythonsuper@gmail.com',['1565208411@qq.com','xinxinyu2011@163.com'])
#     message2 = ('subject2','this is the message of email2','pythonsuper@gmail.com',['1373763906@qq.com','xinxinyu2011@163.com'])
#     send_mass_mail((message1,message2), fail_silently=False)
#    方式三:防止邮件头注入
#     try:
#       send_mail(subject, message, from_email, recipient_list, fail_silently, auth_user, auth_password, connection)
#     except BadHeaderError:
#       return HttpResponse('Invaild header fount.')
#    方式四:EmailMessage()
    #首先实例化一个EmailMessage()对象
#     em = EmailMessage('subject','body','from@example.com',['1565208411@qq.com'],['xinxinyu2011@163.com'],header={'Reply-to':'another@example.com'})
    #调用相应的方法
#     方式五:发送多用途邮件
    subject,form_email,to = 'hello','from@example.com','1565208411@qq.com'
    text_content = 'This is an important message'
    html_content = u'<b>激活链接:</b><a href="http://www.baidu.com" rel="external nofollow" >http:www.baidu.com</a>'
    msg = EmailMultiAlternatives(subject,text_content,form_email,[to])
    msg.attach_alternative(html_content, 'text/html')
    msg.send()
#    发送邮件成功了给管理员发送一个反馈
#     mail_admins(u'用户注册反馈', u'当前XX用户注册了该网站', fail_silently=True)
    return HttpResponse(u'发送邮件成功')
  return render_to_response('common/test.html')

截图如下:

Python django实现简单的邮件系统发送邮件功能

class Send_mail(object):
  '''发送邮件'''
  def __init__(self,sender,passward,receivers):
    self.sender=sender
    self.password=passward
    self.receivers=receivers
  def send(self,ShowText,Name,Header_show):
    '''
    :param ShowText: 发送内容
    :param Name: 发送者
    :param Header_show: 发送文件抬头
    :return:
    '''
    message = MIMEText('%s'%(ShowText), 'plain', 'utf-8')
    message['From'] = Header("%s"%(Name), 'utf-8')
    message['To'] = Header("jiayuguang@qq.com")
    message['Subject'] = Header("%s"%(Header_show),'utf-8')
    smtpObj=smtplib.SMTP('smtp.163.com')
    smtpObj.set_debuglevel(1)
    smtpObj.login(self.sender,self.password)
    smtpObj.sendmail(self.sender,self.receivers,message.as_string())
    smtpObj.quit()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python实现将文本生成二维码的方法示例
Jul 18 Python
python爬虫爬取淘宝商品信息
Feb 23 Python
用tensorflow构建线性回归模型的示例代码
Mar 05 Python
django js实现部分页面刷新的示例代码
May 28 Python
Python简单爬虫导出CSV文件的实例讲解
Jul 06 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
Sep 13 Python
对python中的os.getpid()和os.fork()函数详解
Aug 08 Python
python 扩展print打印文件路径和当前时间信息的实例代码
Oct 11 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
Dec 09 Python
Python实现一个论文下载器的过程
Jan 18 Python
Python3 类型标注支持操作
Jun 02 Python
python游戏开发Pygame框架
Apr 22 Python
使用Django Form解决表单数据无法动态刷新的两种方法
Jul 14 #Python
Python md5与sha1加密算法用法分析
Jul 14 #Python
Python自动化开发学习之三级菜单制作
Jul 14 #Python
python实现杨辉三角思路
Jul 14 #Python
Django 添加静态文件的两种实现方法(必看篇)
Jul 14 #Python
python 实现上传图片并预览的3种方法(推荐)
Jul 14 #Python
Python加密方法小结【md5,base64,sha1】
Jul 13 #Python
You might like
php实现无限级分类实现代码(递归方法)
2011/01/01 PHP
PHP实现从远程下载文件的方法
2015/03/12 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
2015/10/14 Javascript
javascript实现的上下无缝滚动效果
2016/09/19 Javascript
jQuery实现获取隐藏div高度的方法示例
2017/02/09 Javascript
javascript中this用法实例详解
2017/04/06 Javascript
Node.js编写CLI的实例详解
2017/05/17 Javascript
vue src动态加载请求获取图片的方法
2018/10/17 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
2019/01/30 Javascript
axios实现简单文件上传功能
2019/09/25 Javascript
python批量修改文件后缀示例代码分享
2013/12/24 Python
python+selenium+autoit实现文件上传功能
2017/08/23 Python
python如何实现内容写在图片上
2018/03/23 Python
python pygame模块编写飞机大战
2018/11/20 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
2019/08/05 Python
解决django同步数据库的时候app models表没有成功创建的问题
2019/08/09 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
python制作抽奖程序代码详解
2021/01/15 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
Myprotein葡萄牙官方网站:英国优质运动营养品牌
2016/09/12 全球购物
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
高中运动会广播稿
2014/01/21 职场文书
安全生产检查通报
2014/01/29 职场文书
食品流通安全承诺书
2014/05/22 职场文书
优秀共产党员事迹材料
2014/12/18 职场文书
端午节活动总结报告
2015/02/11 职场文书
如何写辞职书
2015/02/26 职场文书
女性健康知识讲座通知
2015/04/23 职场文书
赤壁观后感(2)
2015/06/15 职场文书
小学新课改心得体会
2016/01/22 职场文书
js之ajax文件上传
2021/05/13 Javascript