博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python发送邮件
阅读量:6156 次
发布时间:2019-06-21

本文共 2046 字,大约阅读时间需要 6 分钟。

邮件发送系统大致流程

为了更好的理解邮件发送功能的实现,要先了解邮件发送系统的大致流程。首先  电子邮件之间的相互发送接受就像  邮局邮件发送一样,从一个站点(邮件发送服务器)到目的地站点(邮件接收服务器),然后目的地站点处理收到的邮件,并发送给接受人。每个邮件服务器即担任发送也担任接受邮件,并且每个服务器地址,端口号,配置等也不同。

其实发送邮件的流程就 两部:

第一:写邮件

  • 写好发送方,接受方
  • 写好主题
  • 写好正文(包括附件,图片等)
  • 把信件整理在一起

第二:发送邮件

  • 连接发送邮件服务器
  • 登录邮箱
  • 发送邮件
  • 退出邮箱

代码部分:

# -*- coding:utf-8 -*-import smtplibfrom email.header import Headerfrom email.mime.image import MIMEImagefrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom email.mime.application import MIMEApplication#创建邮件对象,相当于信纸msg = MIMEMultipart()#邮件发送方msg['From'] = 'XXXXXXXX.qq.com'#邮件接收方msg['To'] = '1212112@qq.com'#邮件主题msg['Subject'] = Header('这是邮箱主题部分', charset='UTF-8')#中文主题#文本内容txt = '亲爱的用户'part1 = MIMEText(txt, 'plain', 'utf-8')#添加到邮件中msg.attach(part1)#超文本内容,放有图片,注意src路径,此为放在同一目录中html = '
亲爱的
'#一定要设置邮件格式,否则可能会乱码,当时接手别人手中没加邮件格式的项目,坑了我半天part2 = MIMEText(html, 'html', 'utf-8')#添加到邮件中msg.attach(part2)#图片放到邮件中# 指定图片为当前目录fp = open('test.png', 'rb')msgImage = MIMEImage(fp.read())fp.close()# 定义图片 ID,在 HTML 文本中引用msgImage.add_header('Content-ID', '
')msg.attach(msgImage)#加入文本附件att2 = MIMEText('这是附件里的文字', 'base64', 'utf-8')att2["Content-Type"] = 'application/octet-stream'#设置附件名为runoob.txtatt2["Content-Disposition"] = 'attachment; filename="runoob.txt"'#附件放在邮件中msg.attach(att2)#加入excel附件part=MIMEApplication(open('demo_zuoye.xlsx','rb').read())part.add_header('Content-disposition','attachment',filenmae='demo_zuoye.xlsx')msg.attach(part)#非ssl方式的smtp(简单邮件发送协议),下面注释为ssl方式的smtpsmtp = smtplib.SMTP() # smtp = smtplib.SMTP_SSL() try: #连接主机地址 smtp.connect('mail.yto.net.cn:25') #登录邮箱,需要邮箱账号,密码 smtp.login('XXXXXXXX.qq.com','234123') #发送邮件,需要登录的邮箱号,发送方的邮箱号,发送内容 smtp.sendmail('XXXXXXXX.qq.com', '1212112@qq.com', msg.as_string()) #退出邮箱 smtp.quit() print 'The mail is sended successly.' except smtplib.SMTPException,e: print "Error: 无法发送邮件",e

发送结果:

 

注意点:当自己邮箱作为邮件发送方时,注意邮件服务器的设置里把smtp服务打开

 

其他发送邮件的模块:Yagmail (此模块简单易用)

转载于:https://www.cnblogs.com/rgcLOVEyaya/p/RGC_LOVE_YAYA_361_2days.html

你可能感兴趣的文章
老男孩教育每日一题-第107天-简述你对***的理解,常见的有哪几种?
查看>>
Python学习--time
查看>>
在OSCHINA上的第一篇博文,以后好好学习吧
查看>>
Spring常用注解
查看>>
linux:yum和apt-get的区别
查看>>
Sentinel 1.5.0 正式发布,引入 Reactive 支持
查看>>
数据库之MySQL
查看>>
2019/1/15 批量删除数据库相关数据
查看>>
数据类型的一些方法
查看>>
Webpack 2 中一些常见的优化措施
查看>>
移动端响应式
查看>>
js中var、let、const的区别
查看>>
简洁优雅地实现夜间模式
查看>>
react学习总结
查看>>
在soapui上踩过的坑
查看>>
MySQL的字符集和字符编码笔记
查看>>
ntpd同步时间
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
Apache通过mod_php5支持PHP
查看>>