Gmail 显示电子邮件的 HTML 和文本以及 HTML 部分

Posted

技术标签:

【中文标题】Gmail 显示电子邮件的 HTML 和文本以及 HTML 部分【英文标题】:Gmail displays both HTML and text and HTML parts of email 【发布时间】:2014-10-22 15:11:20 【问题描述】:

我正在使用 Python 向 gmail 帐户发送电子邮件。这是我正在使用的代码

msg = email.mime.multipart.MIMEMultipart()
msg['From'] = 'myemail@gmail.com'
msg['To'] = 'toemail@gmail.com'
msg['Subject'] = 'html test'
msg_html = email.mime.text.MIMEText('<html><head></head><body><b>This is HTML</b></body></html>', 'html')
msg_txt = email.mime.text.MIMEText('This is text','plain')
msg.attach(msg_html)
msg.attach(msg_txt)
#SNIP SMTP connection code
smtpConn.sendmail('myemail@gmail.com', 'toemail@gmail.com', msg.as_string())

当我在 gmail 中查看这封电子邮件时,HTML 和文本版本都显示如下:

这是 HTML

这是文字

应该是显示文本或 html,是什么导致了这种行为。

【问题讨论】:

查看您发送的内容...这是关于您发送的内容的问题,而不是 gmail 的呈现方式 【参考方案1】:

当消息需要以multipart/alternative 发送时,它以multipart/mixed(this is the default)发送。 mixed 表示每个部分包含不同的内容,都应该显示,而alternative 表示所有部分的内容相同,格式不同,只应该显示一个。

msg = email.mime.multipart.MIMEMultipart("alternative")

此外,您应该将这些部分按优先顺序递增,即 HTML 之前的文本。 MUA(在本例中为 GMail)将呈现它知道如何显示的最后一部分。

请参阅Wikipedia article on MIME,了解有关格式化 MIME 消息的详细介绍。

【讨论】:

以上是关于Gmail 显示电子邮件的 HTML 和文本以及 HTML 部分的主要内容,如果未能解决你的问题,请参考以下文章

发送文本和 HTML 电子邮件 - 为啥 Gmail 总是选择文本版本?

Gmail 中的 HTML 电子邮件 - 嵌入图像

在 Yahoo 和 Gmail 中显示时,HTML 电子邮件的内联 CSS 不断被剥离

Base64 图像到 gmail

通过 Gmail API 发送带有纯文本回退的 HTML 电子邮件

带有电子邮件/gmail文本格式的sendmail