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 01 Python
python实现zencart产品数据导入到magento(python导入数据)
Apr 03 Python
python获取当前时间对应unix时间戳的方法
May 15 Python
详解使用python的logging模块在stdout输出的两种方法
May 17 Python
Python网络编程使用select实现socket全双工异步通信功能示例
Apr 09 Python
django 使用 request 获取浏览器发送的参数示例代码
Jun 11 Python
python等差数列求和公式前 100 项的和实例
Feb 25 Python
Python进程Multiprocessing模块原理解析
Feb 28 Python
Python编程快速上手——强口令检测算法案例分析
Feb 29 Python
Python logging模块异步线程写日志实现过程解析
Jun 30 Python
Python类class参数self原理解析
Nov 19 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
Feb 24 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缩放gif和png图透明背景变成黑色的解决方法
2014/10/14 PHP
PHP连接MySQL数据的操作要点
2015/03/20 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
基本jquery的控制tabs打开的数量的代码
2010/10/17 Javascript
IE的有条件注释判定IE版本详解(附实例代码)
2012/01/04 Javascript
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
jQuery实现平滑滚动到指定锚点的方法
2015/03/20 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
详解JavaScript中Date.UTC()方法的使用
2015/06/12 Javascript
jquery实现动静态条形统计图
2015/08/17 Javascript
webpack配置文件和常用配置项介绍
2017/04/28 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
Ant design vue中的联动选择取消操作
2020/10/31 Javascript
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
Scrapy框架使用的基本知识
2018/10/21 Python
python爬虫基础教程:requests库(二)代码实例
2019/04/09 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
2019/05/10 Python
Django集成CAS单点登录的方法示例
2019/06/10 Python
django框架实现模板中获取request 的各种信息示例
2019/07/01 Python
Python生成词云的实现代码
2020/01/14 Python
使用tensorboard可视化loss和acc的实例
2020/01/21 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
Python通过文本和图片生成词云图
2020/05/21 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
Python批量获取并保存手机号归属地和运营商的示例
2020/10/09 Python
Shopee新加坡:东南亚与台湾电商平台
2019/01/25 全球购物
澳大利亚个性化儿童礼品网站:Bright Star Kids
2019/06/14 全球购物
雷朋巴西官方商店:Ray-Ban Brasil
2020/07/21 全球购物
2014年社区庆元旦活动方案
2014/03/08 职场文书
会计专业求职信
2014/08/10 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书
资产移交协议书
2016/03/24 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python
微信小程序实现聊天室功能
2021/06/14 Javascript
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers