Python3傳送帶圖郵件
阿新 • • 發佈:2018-12-20
我們常常會遇到需要通過指令碼新增監控的情況,一般我們會選擇使用郵件的方式通知相關人員。
一個簡單的郵件我們可以輕鬆構建出來(可以參考我之前的文章《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 = "[email protected]"
to_list = ["[email protected]", "[email protected]"]
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')
看,圖片物件、附件物件、兩個收件人,都按照我們的預期實現了!