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设计模式之观察者模式实例
Apr 26 Python
轻松掌握python设计模式之策略模式
Nov 18 Python
详解Python各大聊天系统的屏蔽脏话功能原理
Dec 01 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
Jun 09 Python
用python处理MS Word的实例讲解
May 08 Python
python读取和保存图片5种方法对比
Sep 12 Python
Python实现字典按key或者value进行排序操作示例【sorted】
May 03 Python
python logging模块书写日志以及日志分割详解
Jul 22 Python
解决pytorch报错:AssertionError: Invalid device id的问题
Jan 10 Python
浅谈Django前端后端值传递问题
Jul 15 Python
Python return语句如何实现结果返回调用
Oct 15 Python
python解析json数据
Apr 29 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在文件指定行中写入代码的方法
2012/05/23 PHP
PHP实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
2010/12/03 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
2014/04/15 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
2014/06/24 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
2018/04/12 jQuery
Node错误处理笔记之挖坑系列教程
2018/06/05 Javascript
解决vue项目使用font-awesome,build后路径的问题
2018/09/01 Javascript
微信小程序实现顶部下拉菜单栏
2018/11/04 Javascript
vue实现div拖拽互换位置
2020/07/29 Javascript
原生js实现Flappy Bird小游戏
2018/12/24 Javascript
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
JavaScript实现像雪花一样的Hexaflake分形
2020/07/07 Javascript
js回到页面指定位置的三种方式
2020/12/17 Javascript
python使用多线程编写tcp客户端程序
2019/09/02 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
Python 寻找局部最高点的实现
2019/12/05 Python
Mysql数据库反向生成Django里面的models指令方式
2020/05/18 Python
python名片管理系统开发
2020/06/18 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
CSS3制作圆形滚动进度条动画的示例
2020/11/05 HTML / CSS
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
环保标语口号
2014/06/13 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
工作态度检讨书范文
2015/05/06 职场文书
vscode中使用npm安装babel的方法
2021/08/02 Javascript
DIV CSS实现网页背景半透明效果
2021/12/06 HTML / CSS