网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
在发送邮件时,除填写主题和正文外,还可以增加抄送人、添加附件等。这里我们分
别把测试报告作为正文和附件进行发送。
1.发送邮件正文
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 发送邮件主题
subject = 'Python email test'
# 编写 HTML 类型的邮件正文
msg = MIMEText('<html><h1>你好!</h1></html>', 'html', 'utf-8')
msg['Subject'] = Header(subject, 'utf-8')
# 发送邮件
smtp = smtplib.SMTP()
smtp.connect("smtp.126.com")
smtp.login("sender@126.com", "a123456")
smtp.sendmail("sender@126.com", "receiver@126.com", msg.as_string())
smtp.quit()
首先,调用 email 模块下面的 MIMEText 类,定义发送邮件的正文、格式,以及编码。
然后,调用 email 模块下面的 Header 类,定义邮件的主题和编码类型。
smtplib 模块用于发送邮件。connect()方法指定连接的邮箱服务;login()方法指定登录
邮箱的账号和密码;sendmail()方法指定发件人、收件人,以及邮件的正文; quit()方法用
于关闭邮件服务器的连接。
2.发送带附件的邮件
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# 邮件主题
subject = 'Python send email test'
# 发送的附件
with open('log.txt', 'rb') as f:
send_att = f.read()
att = MIMEText(send_att, 'text', 'utf-8')
att["Content-Type"] = 'application/octet-stream'
att["Content-Disposition"] = 'attachment; filename="log.txt"'
msg = MIMEMultipart()
msg['Subject'] = subject
msg.attach(att)
# 发送邮件
smtp = smtplib.SMTP()
smtp.connect("smtp.126.com")
smtp.login("sender@126.com", "a123456")
smtp.sendmail("sender@126.com", "receiver@126.com", msg.as_string())
smtp.quit()
首先,读取附件的内容。通过 MIMEText 类,定义发送邮件的正文、格式,以及编码;
Content-Type 指定附件内容类型;application/octet-stream 表示二进制流;Content-Disposition
指定显示附件的文件;attachment; filename="log.txt"指定附件的文件名。
然后,使用 MIMEMultipart 类定义邮件的主题,attach()指定附件信息。
最后,通过 smtplib 模块发送邮件,发送过程与第一个例子相同。
用 yagmail 发送邮件
yagmail 是 Python 的一个第三方库,可以让我们以非常简单的方法实现自动发送邮件
功能。
GitHub 项目地址: https://github.com/kootenpv/yagmail。
通过 pip 命令安装。
pip install yagmail
项目文档提供了的简单发送邮件的例子。
import yagmail
# 连接邮箱服务器
yag = yagmail.SMTP(user="sender@126.com", password="a123456",
host='smtp.126.com')
# 邮件正文
contents = ['This is the body, and here is just text http://somedomain/image.png',
'You can find an audio file attached.']
# 发送邮件
yag.send('receiver@126.com', 'subject', contents)
如果想给多个用户发送邮件,那么只需把收件人放到一个 list 中即可。
# 发送邮件
yag.send(['aaa@126.com','bbb@qq.com','ccc@gmail.com'], 'subject', contents)
如果想发送带附件的邮件,那么只需指定本地附件的路径即可。
![img](https://img-blog.csdnimg.cn/img_convert/720c158cdc5a89ee93c2e97d9de2d21b.png)
![img](https://img-blog.csdnimg.cn/img_convert/37003e865fad7248b63169844f4ae46e.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
s://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**