1

我正在使用 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()

如何在电子邮件中添加多个内联部分?谢谢您的帮助

4

1 回答 1

1

我无法完全按照我的意愿执行此操作,但我找到了解决方法。

我最终只是将整个电子邮件变成了 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 元素。

于 2013-08-08T18:07:48.017 回答