2011-11-11 26 views
0

我在發送HTML電子郵件時測試備用視圖的問題。我正在創建以純文本形式發送郵件消息,但是我包含一個HTML備用視圖。我曾嘗試使用多個電子郵件客戶端,但我一直無法看到純文本版本。我主要關心的是,只使用純文本客戶端的人不會正確地看到它。見下面代碼:C#HTML電子郵件 - 替代視圖

MailMessage message = new MailMessage(); 

message.To.Add("email"); 
message.From = new MailAddress("fromaddress"); 
message.Subject = "subject" 
//Plain text version of e-mail 
message.Body = _formattedPlainText; 
message.IsBodyHtml = false; 

AlternateView htmlView = CreateHTMLView(); 

message.AlternateViews.Add(htmlView); 
//message.AlternateViews.Add(plainTextView); 

smtp.Send(message); 

private AlternateView CreateHTMLView() 
{ 
    AlternateView htmlView = AlternateView.CreateAlternateViewFromString(_formattedHTML, null, System.Net.Mime.MediaTypeNames.Text.Html); 

    //Code for adding embedded images... 

    return htmlView; 
} 

有沒有理由相信純文本版本沒有被接受還是有,你知道那絕對只能接收純文本電子郵件的任何客戶端?

在此先感謝

UPDATE:「消息文本亂碼」

您可以通過按下選項箭頭並選擇選項強制GMAIL純文本

+0

大多數現代讀者將默認閱讀HTML。您可以嘗試在Linux系統上的Pine中打開它,我相信這會放棄HTML視圖。可能有一種簡單的方法來強制Outlook或其他應用程序僅以純文本格式(用於測試)查看,但我不確定選項。 –

回答

1

有沒有理由相信純文本版本沒有接收 還是有,你知道那絕對只能接收 純文本電子郵件的任何客戶端?

不,和PINE

您可以在任何* nix OS中使用郵件命令來閱讀電子郵件。它只會以文本格式顯示電子郵件。

UPDATE

A guy here,索賠,如果給出的選項,Gmail只會顯示在純文本電子郵件。如果情況依然如此,我發現谷歌的一個尷尬的默認選擇。

+0

松樹+1。 :D –

+0

@DarkBobG:哈哈我喜歡PINE,是我在Linux的郵件客戶端。使用它,因爲Slackware 95 :) – Icarus

+0

感謝您的快速回答。 Gmail絕對不會爲我選擇純文本版本。我會查看是否有任何設置可以將它強制爲純文本。仍然在尋找最簡單的客戶端,並進行快速設置。我已經看到了電子郵件的來源,它肯定使用我所知道的正確的MIME類型: Content-Type:multipart/alternative; \t boundary =「 - boundary_0_510b3ccc-889b-4b81-9e66-d6fd828a410b」 – Martini48

1

通過一些試驗,我有最好的結果是這樣的:

設置兩個備用的觀點,一個HTML和一個純文本。 然後,單獨留下MailMessage.Body(默認/未定義),並且 保留默認的MailMessage.IsBodyHtml。我的代碼段:

   myMessage.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(HtmlMessage, new System.Net.Mime.ContentType("text/html"))); 
     myMessage.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(TextMessage, new System.Net.Mime.ContentType("text/plain"))); 
    // myMessage.Body = HtmlMessage; 
    // myMessage.IsBodyHtml = true; 
     myClient.UseDefaultCredentials = false; 
     NetworkCredential credentials = new NetworkCredential("xxxx","xxxxx"); 
     myClient.Credentials = credentials; 
     myClient.DeliveryMethod = SmtpDeliveryMethod.Network; 

我測試過這個消息發送到Windows Outlook客戶端和Mac用戶,它似乎工作得很好。電子郵件客戶端軟件選擇視圖。我仍然需要測試它如何適用於webmail應用程序等客戶端。你的旅費可能會改變。

鮑勃