2016-04-03 32 views
1

目前,我可以正確地發送一個HTML電子郵件與ASP.net。我注意到,如果您提供了純文本視圖以及HTML視圖,那麼使用垃圾郵件測試程序https://www.mail-tester.com/會給出更好的分數。所以我決定嘗試添加備用視圖。我的問題是,如果我嘗試添加純文本視圖,它似乎覆蓋HTML視圖。下面是設置了我的HTML工作完全正常的代碼只能查看:ASP.net/C#電子郵件與AlternateViews顯示HTML而不是PlainText

message.IsBodyHtml = true; 
    message.BodyEncoding = Encoding.UTF8; 
    message.BodyTransferEncoding = TransferEncoding.Base64; 
    message.Body = "<html lang=\"en\"><head><meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\"></head><body>" + message.Body + "</body></html>"; 

現在,如果我嘗試添加普通視圖的Gmail似乎只想要顯示的純文本視圖,而不是HTML視圖。無論如何設置哪個視圖是默認的?這裏是我的純文本視圖代碼:

message.IsBodyHtml = true; 
    message.BodyEncoding = Encoding.UTF8; 
    message.BodyTransferEncoding = TransferEncoding.Base64; 
    message.Body = "<html lang=\"en\"><head><meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\"></head><body>" + message.Body + "</body></html>"; 

    //first we create the Plain Text part 
    var plainView = AlternateView.CreateAlternateViewFromString(HtmlToPlainText(message.Body), Encoding.UTF8, MediaTypeNames.Text.Plain); 
    ////then we create the Html part 
    var htmlView = AlternateView.CreateAlternateViewFromString(message.Body, Encoding.UTF8, MediaTypeNames.Text.Html); 
    message.AlternateViews.Add(htmlView); 
    message.AlternateViews.Add(plainView); 

我試圖刪除第一次顯示了機身碼和機身設置爲空字符串,以便它只會增加雙方的交替意見,並沒有奏效。我相信我涵蓋了代碼的所有排列,但仍然沒有任何結果。就像我說的,它只適用於HTML,它適用於html替代視圖,但不能在添加純文本視圖時使用。

回答

1

您首先創建純文本版本,但將其添加到HTML版本之後。根據下面的參考文獻,純文本版本必須首先出現。

您可能還會注意到,在代碼示例中,每個版本都分別​​設置了IsBodyHtml:純文本版本爲false,HTML版本爲true

Correct Syntax for Generating HTML Email using AlternateView

+0

謝謝我以爲我先試過。 – Enkode

相關問題