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