1

system.net.mailを使用してhtml形式の電子メールを送信するコードがあります。Webベースの電子メールサービス(GMail、Hotmailなど)では希望どおりに表示されますが、Outlookではhtml、特に画像が正しく表示されません。

メールをダブルクリックして拡大すると、画像はdivの残りの部分と一緒に拡大されません。htmlは次のとおりです。

strHtml = "<html><body><div style='background-color:#EDF4F8;color:#fff;width:740px;'>";
strHtml += "<div style='width:100%;'><img src='cid:banner' width='100%'/></div><div"    
strHtml += "style='padding:40px;'>";
strHtml += "<div style='font-size:9pt;font-family:'Verdana',sans-serif;padding-top:7;'>";
strHtml += "</div>";
strHtml += "</div></div></body></html>";

SmtpClient client = new SmtpClient("xxx");
client.Credentials = new NetworkCredential("x", "x", "xxx");
MailMessage message = new MailMessage();
message.From = new MailAddress("xx");
message.To.Add("xx");
AlternateView htmlView = AlternateView.CreateAlternateViewFromString(strHtml, null, "text/html");
LinkedResource r = new LinkedResource("c:\\blah.png", "image/png");
htmlView.LinkedResources.Add(r);
message.AlternateViews.Add(htmlView);
message.IsBodyHtml = true;
mailServer.Send(message);

繰り返しになりますが、これはGMail、Hotmailなどで正常に機能し、リンクされたリソースイメージはすべて表示されますが、Outlookは表示されません。具体的には:

  1. Outlookでは、上記で設定した40ピクセルのパディングは表示されません
  2. メールをダブルクリックして独自のウィンドウで開くと、上記のhtmlのバナー画像はメールの残りの部分と一緒に展開されません。作成時のサイズ(740ピクセル)のままです。他のすべての電子メールクライアントでは、画像はdivの幅を拡大します。

ここで何が欠けていますか?これが他のクライアントに表示されるのにOutlookには表示されないのはなぜですか?Outlookは、HTMLをスローする電子メールに何か特別なものを埋め込んでいますか?設定した背景色が表示され、テキストの色とフォントの太さをいじると、すべてOutlookに表示されるため、少なくとも一部のhtmlが機能していることはわかっています。

ありがとう!

4

1 に答える 1

2

あなたが見逃しているのは、WebベースのブラウザがWebブラウザを使用して画像をレンダリングすることです。OutlookはWebブラウザーを使用しませんが、はるかに限定されたカスタムHTMLレンダリングエンジンを使用します。組み込みのHTMLレンダリングを使用しない他のアプリケーションベースのクライアントでも同様の問題が発生する可能性があります(それぞれの動作は少し異なります)。

これらのリンクが役立つ場合があります。

http://www.campaignmonitor.com/css/ http://www.versapay.com/developer-blog/the-art-and-science-of-email-rendering-across-email-clients/

主要なクライアントでプレビューを表示するサービスがありますが、無料ではありません http://litmus.com/email-testing

于 2013-01-27T22:38:03.973 に答える