2013-10-02 64 views
3

首先,你好,爲什麼Outlook不使用text/plain部分?

隨着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" alt="Company name" /><br /> 
<img src="border.png" alt="border" /><br /> 
<img src="face.png" alt="Mr Somebody" /><br /> 
<p>Hello Ninj! 

You requested a confirmation by email...</p> 
<img src="footer.png" alt="footer" /> 
</body></html> 

$plain_body包含一個非常乾淨的文本(感謝雅翁):

vardump($plain_body); 

"Hello Ninj! 

You requested a confirmation by email..." 

但在Outlook中看到的純文本版本,我看到不是所有的HTML版本圖片的alt屬性,一個線,然後一些輕微格式的文本:

公司名稱

邊境

Mr Somebody

你好忍者!

您要求通過電子郵件確認...

頁腳

感謝您提前爲大家能夠幫助:)

回答

4

不能做到這一點。 Outlook保持所有3種主體風格(HTML,RTF,純文本)同步。這是在商店提供商級完成的。

當它收到MIME消息時,它使用HTML正文(如果可用)。消息被保存時,商店提供商使用HTML正文生成純文本正文(PR_BODY屬性)。

+0

感謝您的回答,請允許我嘗試進一步:如果Outlook不關心它,爲什麼還要包含文本的純文本版本?這不是爲了這個目的而創建的另一個主體:當HTML沒有呈現時,顯示出來而不是HTML嗎? – Ninj

+1

如果您要發送到Outlook,除非它是唯一的身體部位,否則plaint文本將不會執行任何操作。請記住,Outlook不會以MIME格式存儲郵件。一旦收到來自POP3/IMAP4 /等的消息。服務器並存儲在一個Outlook存儲中,Outlook沒有存儲郵件的來源和MIME格式。 –

+0

@Ninj:不僅有Outlook,其他客戶端將使用'text/plain'部分。 SpamAssassin不喜歡只有HTML的郵件。 – Tobias

相關問題