2016-04-03 9 views
1

現在、ASP.netでHTMLメールを正しく送信できます。スパムテスターのようなhttps://www.mail-tester.com/を使用すると、プレーンテキストビューとHTMLビューの両方を提供すれば、より良いスコアが得られることに気付きました。だから私は、代替のビューを追加しようとすることにしました。私の問題は、プレーンテキストビューを追加しようとすると、HTMLビューをオーバーライドするように見えるということです。ここだけのビューの私のHTMLを設定するための完全に正常に動作コードは次のとおりです。私は、プレーンビューを追加しようとした場合ASP.net/C#プレインテキスト以外のHTMLを表示するAlternateViewsのメール

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); 

私はそれが唯一の代替ビューの両方を追加し、それがうまくいかなかったように、第1の本体のコードを表示し、空の文字列に身体を設定削除しようとしています。私はコードのすべての順列をカバーし、まだ何も信じていないと思う。私が言ったように、それは完全にHTMLのためにのみ動作し、HTMLの代替ビューでは動作しますが、プレーンテキストのビューを追加するとは動作しません。

答えて

1

プレーンテキストバージョンを最初に作成しますが、HTMLバージョンの後に追加します。以下の参考文献によれば、平文版が最初に来なければならない。

またIsBodyHtmlは各バージョンごとに個別に設定されていることのコード例に気づくことがあります。それは、プレーンテキスト版とHTML版のtrueためfalseです。

Correct Syntax for Generating HTML Email using AlternateView

+0

おかげで、私は私が最初にすることをしようとしたと思いました。 – Enkode

関連する問題