我正在使用Python 2.7并尝试使用smtplib / MIMEMultipart发送电子邮件。我想发送包含多个部分的电子邮件,例如文本消息和HTML消息。我不希望他们成为替代品。我希望它显示文本消息(内联),后跟html(内联)
将来,我还希望包含图片。因此,该消息将包含所有内联的文本,html和图像。
以下是我目前所生成的文本消息,然后将html作为附件
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
s = smtplib.SMTP('localhost')
#this part works
msg = MIMEMultipart('mixed')
msg['Subject'] = subject
msg['From'] = from
msg['To'] = to
html_str = """<html><head></head><body><p>Test</p></body></html>"""
#this shows up with "This is my text" inline and the html as an attachment
text = MIMEText("This is my text", 'plain')
html = MIMEText(html_str, 'html')
msg.attach(text)
msg.attach(html)
s.sendmail(fromEmail, toEmail, msg.as_string())
s.quit()
如何在电子邮件中添加多个内联片段? 谢谢你的帮助
答案 0 :(得分:0)
我无法完全按照自己的意愿去做,但我找到了一个解决方法。
我最后只是将整个电子邮件发送为html电子邮件。对于我需要添加的每一件,我只想添加HTML代码。例如,这是我最终添加图像的方式
html_list.append('<img src="cid:image.png">')
img = MIMEImage(my_data)
img.add_header('Content-ID', '<image.png>')
msg.attach(img)
如果我想添加文字,我可以将其添加为标题(例如<h3>My Text</h3>
)或任何其他html元素。