带有正文内容的 Python 电子邮件多部分

Posted

技术标签:

【中文标题】带有正文内容的 Python 电子邮件多部分【英文标题】:Python Emailing Multipart with body content 【发布时间】:2012-08-13 07:23:00 【问题描述】:

我无法在 python 中发送带有正文的电子邮件作为多部分电子邮件。我所做的一切都导致所有内容都作为附件,我无法让文本或 html 显示在正文中。

msg = MIMEMultipart()
if msg_mime_type == 'text' or not msg_mime_type:
    new_body = MIMEText(body, 'text')
elif msg_mime_type == 'image':
    new_body = MIMEImage(body)
elif msg_mime_type == 'html':
    new_body = MIMEText(body, 'html')
new_body.add_header('Content-Disposition', 'inline', filename='body')
msg.set_payload(new_body) #also tried msg.attach(new_body)

我需要使用Multipart 以便我还可以添加附件,但为了简单起见,我保留了该代码。

【问题讨论】:

【参考方案1】:

您需要指定这些部件是彼此的替代品,例如multipart/alternative mime 类型:

msg = MIMEMultipart('alternative')

默认为mixed;见email library examples。

请注意,要创建包含附件和替代 (HTML / CSS) 选项的电子邮件,您需要有一个*** multipart/related 容器,其中包含 alternative 部分作为第一个条目。

【讨论】:

现在 yahoo 没有注册正文或附件,gmail 注册为附件 @notbad.jpeg:你需要嵌套 mime 部分;主要消息是多部分/替代(读者可以选择 HTML 或文本),但其余消息需要成为您的电子邮件的一部分,而不是替代的一部分。 是的,这对我一点帮助都没有,它实际上让我更加困惑,也许你可以发布一个更大的代码 sn-p? 示例 alternative 在 SO 上构建多部分消息:Python: Sending Multipart html emails which contain embedded images Python 食谱网站上的示例:code.activestate.com/recipes/576931-send-a-multipart-email

以上是关于带有正文内容的 Python 电子邮件多部分的主要内容,如果未能解决你的问题,请参考以下文章

调用 gmail api 以发送带有附件(多部分)的电子邮件时,请求的正文如何?

只获取 MIME 电子邮件的“文本/纯文本”部分

PHP pdf 电子邮件附件,内容类型:多部分/混合,html 消息未显示

在 Python 中发送带有 HTML+plain_text 电子邮件的 PDF 附件

多部分电子邮件 PDF 附件空白

仅发送纯文本电子邮件,正文中包含 Rails mime 部分