gpt4 book ai didi

python - 使用 Python 的 email.mime.multipart 发送 HTML 邮件时命名内联图像

转载 作者:太空宇宙 更新时间:2023-11-03 15:08:23 25 4
gpt4 key购买 nike

我使用 python 的电子邮件包发送带有内联图像的电子邮件。这样可行。现在,我想为这些图像分配实际名称(不是 html 标题 ..),因此在下载它们时它们不会被命名为 'noname'(例如 gmail)。现在的代码:

from email.mime.multipart import MIMEMultipart

msgRoot = MIMEMultipart('related')
msgAlternative = MIMEMultipart('alternative')
...

# image file
msgText = MIMEText('<img src="cid:image" alt="Smiley" title="title">', 'html')
msgAlternative.attach(msgText)

# In-line Image
with open('/Users/john/Desktop/2015-04-21_13.35.38.png', 'rb') as fp:
msgImage = MIMEImage(fp.read())
msgImage.add_header('Content-ID', '<image>')
msgRoot.attach(msgImage)

...
server.sendmail(sender, recipients, msgRoot.as_string())

我尝试了很多东西,也问了很多次谷歌。有可能吗?谢谢。

最佳答案

解决方案:

实际上可以分配Content-IDContent-TypeContent-Transfer-EncodingContent-Disposition 到一个 MIME 文件 ( check for more )。这样,您只需添加:

msgImage.add_header('Content-Disposition', 'inline', filename='filename')

因此,您最终拥有:

from email.mime.multipart import MIMEMultipart

msgRoot = MIMEMultipart('related')
msgAlternative = MIMEMultipart('alternative')
...

# image file
msgText = MIMEText('<img src="cid:image" alt="Smiley" title="title">', 'html')
msgAlternative.attach(msgText)

# In-line Image
with open('/Users/john/Desktop/2015-04-21_13.35.38.png', 'rb') as fp:
msgImage = MIMEImage(fp.read())
msgImage.add_header('Content-ID', '<image>')
msgImage.add_header('Content-Disposition', 'inline', filename='filename')
msgRoot.attach(msgImage)

...
server.sendmail(sender, recipients, msgRoot.as_string())

你就完成了。

您可能更喜欢@PascalvKooten 提到的方式,像这样创建 MIMEImage 实例:

msgImage = MIMEImage(fp.read(), filename='filename')

这也很有魅力。

关于python - 使用 Python 的 email.mime.multipart 发送 HTML 邮件时命名内联图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30152546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com