前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

让工作飞起来:十分钟教你使用Python发送带图邮件

我们常常会遇到需要通过脚本添加监控的情况,一般我们会选择使用邮件的方式通知相关人员。

一个简单的邮件我们可以轻松构建出来(可以参考我之前的文章《Python3使用smtplib发送邮件》),但是有些时候在邮件中增加一个图片往往能起到事半功倍的效果,毕竟一图胜千言嘛。

今天我们就看下如何在邮件中添加图片信息。

# -*- coding: utf8 -*-
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
import smtplib
import matplotlib.pyplot as plt
if __name__ == '__main__':
 # 以html格式构建邮件内容
 send_str = '<html><body>'
 send_str += '<center>下边是一张图片</center>'
 
 # html中以<img>标签添加图片,align和width可以调整对齐方式及图片的宽度
 send_str += '<img src="cid:image1" alt="image1" align="center" width=100% >'
 send_str += '<center>上边是一张图片</center>'
 send_str += '</body></html>'
 
 # 画图并保存到本地
 pic_path = 'test.png'
 plt.plot([1,3,2,4], '--r')
 plt.title('这是一个测试')
 plt.savefig(pic_path)

 # 构建message
 msg = MIMEMultipart()
 
 # 添加邮件内容
 content = MIMEText(send_str, _subtype='html', _charset='utf8')
 msg.attach(content)
 
 # 构建并添加图像对象
 img1 = MIMEImage(open(pic_path, 'rb').read(), _subtype='octet-stream')
 img1.add_header('Content-ID', 'image1')
 msg.attach(img1)

 # 邮件主题
 msg['Subject'] = '这是一封带图邮件'
 
 # 邮件收、发件人
 user = "751718003@qq.com"
 to_list = ["751718003@qq.com", "qixizhuang@yeah.net"]
 msg['To'] = ';'.join(to_list)
 msg['From'] = user

 # 构建并添加附件对象
 # 如果不想直接在邮件中展示图片,可以以附件形式添加
 img = MIMEImage(open(pic_path, 'rb').read(), _subtype='octet-stream')
 img.add_header('Content-Disposition', 'attachment', filename=pic_path)
 msg.attach(img)

 # 密码(有些邮件服务商在三方登录时需要使用授权码而非密码,比如网易和QQ邮箱)
 passwd = "你的授权码"
 
 # 登录邮箱
 server = smtplib.SMTP_SSL("smtp.qq.com",port=465)
 server.login(user, passwd)
 print('Login Successful!')
 
 # 发送邮件
 server.sendmail(user, to_list, msg.as_string())
 print('Send Successful')

看,图片对象、附件对象、两个收件人,都按照我们的预期实现了!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言