import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import COMMASPACE, formatdate
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
def send_mail(mail_msg, subject, imgs, to, cc, bcc, name, header, tail):
message = MIMEMultipart('related')
message['From'] = 'rpa05@mail.com'
message['To'] = COMMASPACE.join(to)
message['Cc'] = COMMASPACE.join(cc)
msgAlternative = MIMEMultipart('alternative')
#开启后,显示一个没内容的附件
#message.attach(msgAlternative)
subject = subject
message['Subject'] = Header(subject)
message['Date'] = formatdate(localtime=True)
mail_msg = ''
for i in range(len(imgs)):
mail_msg += f'<img src="cid:image{i + 1}" width="99%">'
# 添加图片前后的html标签,邮件开头,邮件结尾
mail_msg = header + mail_msg + tail
message.attach(MIMEText(mail_msg, 'html', 'utf-8'))
for i, img_name in enumerate(imgs):
with open(img_name, 'rb') as fp:
img_data = fp.read()
msg_image = MIMEImage(img_data)
msg_image.add_header('Content-ID', '<image%d>' % (i + 1))
message.attach(msg_image)
# # 指定图片为当前目录
# fp = open(img, 'rb')
# msgImage = MIMEImage(fp.read())
# fp.close()
#
# # 定义图片 ID,在 HTML 文本中引用
# msgImage.add_header('Content-ID', '<image1>')
# message.attach(msgImage)
msgAlternative.attach(MIMEText(mail_msg, 'html', 'utf-8'))
#设置你的邮件服务器ip、端口
server = smtplib.SMTP('10.134.28.100:25')
server.ehlo_or_helo_if_needed()
server.ehlo() # 向Gamil发送SMTP 'ehlo' 命令
server.starttls()
# server.login(sender, mail_pass)
print("邮件发送成功---------->",name)
server.sendmail('rpa05@mail.com', to + cc + bcc , message.as_string())
server.quit()
if __name__ == '__main__':
suject = 'test fii-na '
imgs = ['a5.png', 'a6.png']
to=cc=bcc='1@1.com'
send_mail(mail_msg, suject, imgs, to=to, cc=cc, bcc=cc, name='name', header='header', tail='tail')
参考
https://www.runoob.com/python/python-email.html
https://www.jb51.net/article/167391.htm
https://blog.csdn.net/weixin_44152831/article/details/89214911