python發送正文和附件帶圖片的郵件
MIMEImage
內容形式爲圖片
import smtplib #發郵件smtplib
#發送文本內容用email.mime.text模塊
#MIMEText:內容形式爲純文本、HTML頁面
#MIMEImage:內容形式爲圖片
#MIMEMutipart:多形式組合,可包含文本和附件
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.header import Header #Header是用來構建郵件
from email.mime.base import MIMEBase
from email import encoders
import time #時間模塊
import os,sys
import jinja2
# 發送郵件
def sendEmail(msg):
try:
server=smtplib.SMTP()
server.connect(smtpserver)
server.login(username,password)
server.sendmail(sender,receiver,msg.as_string())
server.sendmail(sender,cc, msg.as_string())
server.quit()
print("發送成功")
except:
print("發送失敗")
#<pre> 標籤可定義預格式化的文本。
#被包圍在 <pre> 標籤 元素中的文本通常會保留空格和換行符。而文本也會呈現爲等寬字體。
#<img> 標籤的 src 屬性是必需的。它的值是圖像文件的 URL,也就是引用該圖像的文件的的絕對路徑或相對路徑。
def addPicture(receiver,subject,path):
#加入圖片
msg = MIMEMultipart()
msg['Subject'] = Header(subject)
msg['From'] = Header('動漫圖片推送')
msg['To'] = Header(";".join(receiver))
msg['cc'] = Header(";".join(cc))
#正文-圖片 只能通過html格式來放圖片
htmlFile = """\
<html>
<head></head>
<body>
<pre style="font-family:arial;margin:left;">
Dears all:
下圖是火影鳴人的圖片
<img src="cid:image1">
</pre>
</body>
</html>
"""
htmlpart = MIMEText(htmlFile,'html','utf-8')
msg.attach(htmlpart)
os.chdir(path)
#在正文中顯示圖片
File1 = 'D:/tmp/火影.jpg'
image = MIMEImage(open(File1,'rb').read(),File1.split('.')[-1])
# 定義圖片 ID,在 HTML 文本中引用
image.add_header('Content-ID','<image1>')
msg.attach(image)
# 附件中含有圖片
image_file = open(r'D:/tmp/火影.jpg','rb').read()
pic = MIMEImage(image_file)
pic.add_header('Content-Disposition','attachment',filename='火影.jpg')
msg.attach(pic)
return msg
if __name__=='__main__':
sender = '[email protected]'
receiver = ['[email protected]']
subject = '動漫主題郵件'
smtpserver = '10.176.218.30'
username = 's-dwh'
password = '123456!a'
dir = 'D:/tmp/'
cc=['[email protected]']
msg=addPicture(receiver,subject,dir)
sendEmail(msg)