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基础教程
Feb 05 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
Apr 24 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
Jan 11 Python
tensorflow 加载部分变量的实例讲解
Jul 27 Python
python 使用 requests 模块发送http请求 的方法
Dec 09 Python
python3模拟实现xshell远程执行liunx命令的方法
Jul 12 Python
python实现高斯(Gauss)迭代法的例子
Nov 20 Python
Python 实现加密过的PDF文件转WORD格式
Feb 04 Python
python numpy--数组的组合和分割实例
Feb 24 Python
Python基于字典实现switch case函数调用
Jul 22 Python
Python如何创建装饰器时保留函数元信息
Aug 07 Python
浅谈python 类方法/静态方法
Sep 18 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禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
js getElementsByTagName的简写方式
2010/06/27 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
js实现简洁大方的二级下拉菜单效果代码
2015/09/01 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
JS仿京东移动端手指拨动切换轮播图效果
2020/04/10 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
Python中暂存上传图片的方法
2015/02/18 Python
详解Python中time()方法的使用的教程
2015/05/22 Python
python利用拉链法实现字典方法示例
2017/03/25 Python
python的文件操作方法汇总
2017/11/10 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
2019/02/12 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
Python classmethod装饰器原理及用法解析
2020/10/17 Python
波兰补充商店:Muscle Power
2018/10/29 全球购物
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
C#中有没有静态构造函数,如果有是做什么用的?
2016/06/04 面试题
建筑工程技术应届生求职信
2013/11/17 职场文书
毕业生找工作的求职信范文
2013/12/24 职场文书
女方婚礼新郎答谢词
2014/01/11 职场文书
大专生毕业的自我评价
2014/02/06 职场文书
廉洁自律演讲稿
2014/05/22 职场文书
小学综合实践活动总结
2014/07/07 职场文书
销售目标责任书
2014/07/23 职场文书
2015年乡镇工会工作总结
2015/05/19 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
2021/05/12 Python
MySQL删除和插入数据很慢的问题解决
2021/06/03 MySQL