我的代码使用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? Outlook是否将一些额外的内容嵌入到丢弃HTML的电子邮件中?我知道至少某些的html正在工作,因为我设置的背景颜色我出现了,我已经摆弄了文本颜色和字体重量,它们都显示在Outlook中。
谢谢!
答案 0 :(得分: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