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)