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は表示されません。具体的には:
- Outlookでは、上記で設定した40ピクセルのパディングは表示されません
- メールをダブルクリックして独自のウィンドウで開くと、上記のhtmlのバナー画像はメールの残りの部分と一緒に展開されません。作成時のサイズ(740ピクセル)のままです。他のすべての電子メールクライアントでは、画像はdivの幅を拡大します。
ここで何が欠けていますか?これが他のクライアントに表示されるのにOutlookには表示されないのはなぜですか?Outlookは、HTMLをスローする電子メールに何か特別なものを埋め込んでいますか?設定した背景色が表示され、テキストの色とフォントの太さをいじると、すべてOutlookに表示されるため、少なくとも一部のhtmlが機能していることはわかっています。
ありがとう!