我通过Python email
/ smtplib
发送的电子邮件有一个奇怪的问题。
我正在尝试通过以下方式撰写电子邮件:
MIME结构的设置如下:
multipart/mixed
multipart/alternative
text/plain
multipart/related
text/html
image/png - inline
application/pdf - attachment
这似乎在我测试过的每个邮件客户端上都可以正常使用{Android上的BlueMail,iOS邮件客户端,Roundcube} 除(对于Windows 10邮件客户端)。出于某种原因,Windows 10内置邮件客户端似乎可以很好地显示嵌入式图像,但是看不到其他附件的痕迹。
我在Internet上能够找到的有限信息表明这是Windows 10邮件客户端的错误,但是我个人在此客户端中收到了其他电子邮件,包括内联附件和附件,它们显示得很好-因此,显然存在某种可行的解决方法/替代消息结构。
因此,我的问题是:我如何才能以不同的方式设置此消息的格式,以便在所有相关的邮件客户端中正确显示该消息?
我正在用Python编写这样的电子邮件:
message = MIMEMultipart("mixed")
message["From"] = ...
.
.
.
bodyText = "..."
bodyHTML = "..."
mailFrom = "..."
targetEmail = "..."
imageContent = ...
messageBody = MIMEMultipart("alternative")
messageBody.attach(MIMEText(bodyText, "plain"))
messageBodyHTML = MIMEMultipart("related")
messageBodyHTML.attach(MIMEText(bodyHTML, "html"))
messageImage = MIMEImage(imageContent)
messageImage.add_header("Content-Disposition", 'inline; filename="..."')
messageImage.add_header("Content-ID", "<id used in html body>")
messageBodyHTML.attach(messageImage)
messageBody.attach(messageBodyHTML)
message.attach(messageBody)
attachment = MIMEApplication(fileContent, Name=fileName)
attachment.add_header("Content-Disposition", 'attachment; filename="..."')
message.attach(attachment)
self.smtplibSession.sendmail(mailSource, targetEmail, message.as_string())
答案 0 :(得分:3)
与您不同,附件文件没有问题,相反,我在显示嵌入式图像(User
)时遇到了问题。
不幸的是,正确处理MIME邮件中的非标准方法是一项预期具有良好电子邮件客户端的功能。显然Windows 10 Mail还不如“好”。
我建议您使用的结构是:
owner__email
在以下客户端中,此结构没有问题。
因此,请尝试以下代码,看看它是否对您有用。
Windows 10 Mail 16005.11629.20174.0