为啥 Outlook 不使用 text/plain 部分?
Posted
技术标签:
【中文标题】为啥 Outlook 不使用 text/plain 部分?【英文标题】:Why won't Outlook use the text/plain part?为什么 Outlook 不使用 text/plain 部分? 【发布时间】:2013-10-08 17:59:27 【问题描述】:首先,你好,
使用 SwiftMailer,我正在发送 html+PLAIN 电子邮件。
在 Outlook 上,当将此电子邮件显示为纯文本时,这不是我显示的纯文本部分,而是 HTML 的自动解析版本。
有谁知道在显示纯文本时如何强制 Outlook 使用文本/纯文本部分?
我的代码执行以下操作:
$plain_body = convert_html_to_text($body);
$message->setBody($body, 'text/html')
->addPart($plain_body, 'text/plain');
$body
有一些格式和图片:
vardump($body);
<html>
<head>...</head>
<body>
<img src="logo.png" /><br />
<img src="border.png" /><br />
<img src="face.png" /><br />
<p>Hello Ninj!
You requested a confirmation by email...</p>
<img src="footer.png" />
</body></html>
$plain_body
包含一个非常干净的文本(感谢 javon):
vardump($plain_body);
"Hello Ninj!
You requested a confirmation by email..."
但在 Outlook 中查看的纯文本版本中,我看到的是 HTML 版本图片的所有 alt
属性,一行一行,然后是一些轻微格式化的文本:
公司名称
边框
某人先生
你好忍者!
您要求通过电子邮件确认...
页脚
在此先感谢所有能够提供帮助的人:)
【问题讨论】:
【参考方案1】:不能这样做。 Outlook 使所有 3 种正文风格(HTML、RTF、纯文本)保持同步。这是在商店提供商级别完成的。
当它接收到 MIME 消息时,它使用 HTML 正文(如果可用)。保存消息后,存储提供程序使用 HTML 正文生成纯文本正文(PR_BODY 属性)。
【讨论】:
感谢您的回答,请允许我进一步尝试:如果 Outlook 不关心它,我们为什么还要包含文本的文本/纯文本版本?这个替代体不是为了这个目的而设计的:在不呈现 HTML 时显示而不是 HTML? 如果您要发送到 Outlook,纯文本不会做任何事情,除非它是唯一的正文部分。请记住,Outlook 不会以 MIME 格式存储邮件。一旦收到来自 POP3/IMAP4/等的消息。服务器并存储在 Outlook 存储中,Outlook 不知道邮件来自哪里以及它的 MIME 格式是什么。 @Ninj:那里不仅有 Outlook,还有 Outlook。其他客户端将使用text/plain
部分。 SpamAssassin 不喜欢纯 HTML 的邮件。以上是关于为啥 Outlook 不使用 text/plain 部分?的主要内容,如果未能解决你的问题,请参考以下文章
为啥响应总是 "detail":"Unsupported media type \"text/plain\" in request." 在
获取 Outlook MailItem 的 Content-Type