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 失效?我知道至少有一些html 可以正常工作,因为我设置的背景颜色会显示出来,并且我已经摆弄了文本颜色和字体粗细,它们都显示在 Outlook 中。

谢谢!

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 回答