我看过其他几个帖子,包括:
创建一个带有图像的 MIME 电子邮件模板以使用 python / django 发送
这些以及用于 smtplib 和电子邮件的 python 文档让我很接近。我正在使用下面的代码创建一封电子邮件,其中嵌入了一个简单的 jpg。如果我将电子邮件发送到 gmail,它将很好地显示嵌入的图像,但 Outlook 2013 不会。
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEImage import MIMEImage
From = ''
To = ''
msg = MIMEMultipart()
msg['Subject'] = 'image test message'
msg['From'] = From
msg['To'] = To
text = 'This is sample text from me'
html = '''
<html>
<head>
<title> this is a test title </title>
</head>
<body>
<p> Test me <br>
Another line <br>
This is the image you were looking for <img src="cid:test_image"><br>
This will teach you not to click on links in strange <a href="http://purple.com">emails</a>
</p>
</body>
</html>
'''
part1 = MIMEText(text, 'plain')
part2 = MIMEText(html, 'html')
msg.attach(part1)
msg.attach(part2)
img_data = open('image.jpg', 'rb').read()
img = MIMEImage(img_data, 'jpeg')
img.add_header('Content-Id', '<test_image>')
msg.attach(img)
s = smtplib.SMTP('localhost')
s.sendmail(From, To, msg.as_string())
s.quit()
我已经检查了 Outlook 中我能想到的所有下载和安全设置,它们都很好。我还将发件人添加到安全发件人列表中。我可以使用 Outlook 中的常规工具接收使用嵌入图像创建的其他电子邮件。从我一直在做的阅读和查看收到的电子邮件的来源来看,outlook 似乎不知道在哪里可以找到图像。也没有与此电子邮件关联的附件。以下是当我右键单击电子邮件并查看源代码时得到的结果。
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"><title> this is a test title </title>
</head>
<body>
<p> Test me <br>
Another line <br>
This is the image you were looking for <img src="cid:test_image"><br>
This will teach you not to click on links in strange <a href="http://purple.com">emails</a>
</p>
</body>
</html>
我目前认为这与内容类型有关,或者我只是搞砸了代码。我认为代码很好,因为 gmail 显示图像正常,当我将其从 gmail 转发到 Outlook 时,转发的消息显示正常。