2016-12-08 8 views
2
として
using (MailMessage message = new MailMessage()) // using System.Net.Mail; 
    { 
     string mailFrom = "[email protected]"; 
     string smtpServer = "smtp.server.net"; 

     message.From = new MailAddress(mailFrom); 
     message.To.Add("[email protected]"); 
     message.Subject = "subject"; 
     message.SubjectEncoding = Encoding.UTF8; 

     message.IsBodyHtml = true; 
     message.Body = "<h1>VODA</h1>"; 
     message.BodyEncoding = Encoding.UTF8; 

     AlternateView plainView = AlternateView.CreateAlternateViewFromString("test content", Encoding.UTF8, "text/plain"); 
     message.AlternateViews.Add(plainView); 

     SmtpClient smtpClient = new SmtpClient(smtpServer); 

     smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; 
     smtpClient.UseDefaultCredentials = false; 
     smtpClient.Credentials = new System.Net.NetworkCredential("user", "pass"); 
     smtpClient.EnableSsl = true; 
     smtpClient.Port = 587; 
     smtpClient.Send(message); 
    } 

をHTML形式の電子メールメッセージと平文を送信:は、代替

Subject: subject 
Content-Type: multipart/alternative; boundary=--boundary_0_989afdbb-5fe4-4155-ba59-3d5ffdbb909e 
Message-Id: <[email protected]> 

----boundary_0_989afdbb-5fe4-4155-ba59-3d5ffdbb909e 
Content-Type: text/plain; charset=utf-8 
Content-Transfer-Encoding: base64 

PGgxPlZPREE8L2gxPg== 
----boundary_0_989afdbb-5fe4-4155-ba59-3d5ffdbb909e 
Content-Type: text/plain; charset=utf-8 
Content-Transfer-Encoding: base64 

dGVzdCBjb250ZW50 
----boundary_0_989afdbb-5fe4-4155-ba59-3d5ffdbb909e-- 

System.Net.Mail.MailMessageがtext/html contectタイプを設定しないのはなぜ?

Content-Type: text/plain; charset=utf-8 
Content-Transfer-Encoding: base64 

PGgxPlZPREE8L2gxPg== 

追加したMailMessageプロパティはありますか?

答えて

0

回答は、この記事に書かれている:GMail displays plain text email instead HTML

はプレーンテキスト部分の後にHTMLの一部を入れ、メッセージの部分の順序を切り替えてみてください。それは働くかもしれない:)。

注記:ここで私がこれを読んだ場所(または私が確かにあったとしても)は覚えていませんが、メッセージの優先部分が最後の部分かもしれないと思うので、

更新:マルチパートMIMEメッセージの部分が優先度の高い順に表示されている場所が見つかりました。ここでは、セクション7.2.3で3番目から最後の段落までです。

text/htmlの後にtext/plainの後にgmailがhtmlコンテンツを表示します。 Microsoft ExchangeはメッセージのHTMLバージョンを表示しますが、バージョンが追加される順序は気にしません。

AlternateView plainView = AlternateView.CreateAlternateViewFromString("test content", Encoding.UTF8, "text/plain"); 
message.AlternateViews.Add(plainView); 

AlternateView htmlView = AlternateView.CreateAlternateViewFromString(htmlContent, Encoding.UTF8, "text/html"); 
message.AlternateViews.Add(htmlView); 
2

あなたがBodyAlternateViewsを使用しているtext/plainであることが期待されるとAlternateViewsは異なるコンテンツタイプを提供します。ドキュメント(https://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.alternateviews.aspx)から:

、はMailMessageオブジェクトへの代替ビューを追加するビューのための添付ファイルを作成し、AlternateViewsによって返されたコレクションに追加するには。 Bodyプロパティを使用してテキストバージョンを指定し、AlternateViewsコレクションを使用して他のMIMEタイプのビューを指定します。

+0

ありがとうございました。 – broadband