python 发送邮件学习
来源:互联网 发布:sql server2008免费版 编辑:程序博客网 时间:2024/05/29 04:29
在学习python+selenium框架中,涉及到使用python将测试报告邮件发送,下面学习学习python的邮件模块
https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832745198026a685614e7462fb57dbf733cc9f3ad000 廖雪峰老师文章
http://www.runoob.com/python/python-email.html 菜鸟教程
基础知识:SMTP 简单的邮件传输协议,可发送纯文本邮件、HTML邮件以及带附件的邮件,python对SMTP的支持包括有有smtplib和email模块,email
负责构造邮件,smtplib
负责发送邮件。
构造一个邮件对象就是一个Messag
对象,如果构造一个MIMEText
对象,就表示一个文本邮件对象,如果构造一个MIMEImage
对象,就表示一个作为附件的图片,要把多个对象组合起来,就用MIMEMultipart
对象,而MIMEBase
可以表示任何对象
下面就使用我自己的qq邮箱给其他邮箱发邮件
1、首先要在qq邮箱申请一个授权码,百度可以得到申请方法
第一个可以成功发送邮件的程序(使用qq邮箱发送文本文档)
import smtplibfrom email.mime.text import MIMEText #发送文本文件from email.utils import formataddr# 邮箱地址和口令sender_addr= '14xxxxx@qq.com' #发件人邮箱password = 'xxxxxxx' #这里的密码是申请的授权码#SMTP服务器地址:stmp_server ='smtp.qq.com' #qq邮箱SMTP服务器地址#收件人地址receive_addr = '1404482005@qq.com'#创建邮件对象,这里是文本文档邮件对象,三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码msg = MIMEText('send with file..','plain','utf-8')msg['From'] = formataddr(['111111',sender_addr])#‘111’发件人邮件昵称msg['To'] = formataddr(['j111',receive_addr])#收件人邮件昵称msg['Subject'] = "python" #邮件title、主题try: server = smtplib.SMTP_SSL(stmp_server,465) #qq邮箱SMTP服务器ssl端口号465 server.set_debuglevel(1) #就可以打印出和SMTP服务器交互的所有信息 server.login(sender_addr,password) #登录 server.sendmail(sender_addr,receive_addr,msg.as_string()) #发邮件,msg.as_string()把文本内容转化为string print('邮箱链接成功') server.quit()except smtplib.SMTPException as e: #异常SMTPException print("邮箱链接失败,链接失败原因,%s"%e)
在第一次中遇到一个问题,程序运行可是一直没有发出邮件并结束,smtplib.SMTP_SSL(stmp_server,465)
将这里原来的SMTP
修改为SMTP_SSL
则成功发出邮件
第二个可以发送文本内容、链接,图片内容和文本附件的邮件程序,且有多个收件人
import smtplibfrom email.mime.text import MIMEText #发送文本文件from email.mime.multipart import MIMEMultipart #附件from email.mime.image import MIMEImage #图片from email.utils import formataddrimport osclass Email_Example(object): def __init__(self): # 输入邮箱地址和口令 self.sender_addr= 'xxxxx@qq.com' self.password = 'xxxxxx' #授权码 #输入SMTP服务器地址: self.stmp_server ='smtp.qq.com' #qq邮箱SMTP服务器地址 #收件人地址 self.receive_addr = ['14xxx@qq.com','1xxxxx@qq.com']#多个收件人就用list def set_content(self): #创建邮件对象 self.msgRoot = MIMEMultipart('alternative') #设置基本信息 self.title = 'python email test' self.msgRoot['From'] = formataddr(['JQ',self.sender_addr]) self.msgRoot['To'] = formataddr(self.receive_addr) self.msgRoot['Subject'] = self.title #邮件title #设置正文文本内容 mail_text = 'HELL0' self.msgRoot.attach(MIMEText(mail_text,'plain','utf-8')) #设置html格式内容,并把图片嵌入正文文本 #要把图片嵌入到邮件正文中,我们只需按照发送附件的方式,先把邮件作为附件添加进去, # 然后,在HTML中通过引用src="cid:0"就可以把附件作为图片嵌入了。 # 如果有多个图片,给它们依次编号,然后引用不同的cid:x即可 mail_html =""" <p>html内容</p> <p><a href="https://www.baidu.com">百度一下</a></p> <p><img src="cid:image1"></p> """ self.msgRoot.attach(MIMEText(mail_html,'html','utf-8')) #设置图片目录 file_path =os.path.abspath('.')+r'\1' img_path =os.path.abspath('.')+r'\1.png' fp = open(img_path, 'rb') msgImage = MIMEImage(fp.read()) fp.close() # 定义图片 ID,在 HTML 文本中引用 msgImage.add_header('Content-ID', '<image1>')#设置图片id self.msgRoot.attach(msgImage) #多个附件发送(文件) for f in os.listdir(file_path): print(f) path = os.path.join(file_path,f) msgFile = MIMEText(open(path).read()) msgFile["Content-Type"] = 'application/octet-stream' msgFile["Content-Disposition"] = 'attachment; filename=' + f self.msgRoot.attach(msgFile) def mail_send(self): try: server = smtplib.SMTP_SSL(self.stmp_server,465) #qq邮箱SMTP服务器ssl端口号465 server.set_debuglevel(1) #就可以打印出和SMTP服务器交互的所有信息 server.login(self.sender_addr,self.password) server.sendmail(self.sender_addr,self.receive_addr,self.msgRoot.as_string()) #把文本内容转化为string print('邮箱链接成功') server.quit() except smtplib.SMTPException as e: #异常SMTPException print("邮箱链接失败,链接失败原因,%s"%e)if __name__ =='__main__': email = Email_Example() email.set_content() email.mail_send()
终于了解了大概的原理,在自动化框架中接着运用
- python 发送邮件学习
- python发送邮件学习
- 学习使用python发送邮件
- Python学习 简易发送邮件
- 【python学习.邮件的发送】
- Python 学习笔记 发送邮件
- python学习之 发送邮件
- 8.python学习笔记:python发送邮件
- python模块学习 ---- smtplib 邮件发送
- python模块学习 ---- smtplib 邮件发送
- python模块学习 ---- smtplib 邮件发送
- python模块学习 ---- smtplib 邮件发送
- PYTHON功能学习之邮件发送
- python模块学习 ---- smtplib 邮件发送
- python模块学习 ---- smtplib 邮件发送
- 转:python模块学习 ---- smtplib 邮件发送
- python模块学习 ---- smtplib 邮件发送
- python模块学习 ---- smtplib 邮件发送
- IntelliJ IDEA实用快捷键
- LinuxStudyNote(31)-Linux常用命令(7)-网络命令(2)traceroute、netstat
- Mybaits | Mysql编程
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 B Train Seats Reservation
- HDU5692 Snacks (dfs序 + 线段树)
- python 发送邮件学习
- 对空防御的训练 改编自BZOJ3165 (线段树永久化标记 李超线段树)
- 题目325:zb的生日
- ubuntu下tesseract 4.0安装及参数使用
- promise举例
- [JZOJ5390]维护直线
- 免密登录配置
- Unity2D游戏入门教程(一)宝石迷阵(3)如何判断地图是死图
- python创建字典