C#邮件嵌入的图片在IE中无法显示

3

我正在使用C#.Net发送包含嵌入式图像的HTML电子邮件。这些电子邮件在Firefox和Chrome中正常工作,但图像在Internet Explorer(IE)中无法显示。我知道IE设置不会导致问题,因为使用Blat发送的嵌入式图像可以正常工作。我是否错过了某些选项,例如字符集,导致了这个问题?我的代码如下:

 MailMessage msg = new MailMessage();
 MailAddress from = new MailAddress("Myemail@MyDomain", "My Name");
 msg.To.Add("Myemail@MyDomain");
 msg.From = from;
 msg.Subject = "My subjecct line";

 AlternateView htmlView = AlternateView.CreateAlternateViewFromString("This is a sample JPG embedded image<br><img src=\"cid:image1.jpg\">", null, "text/html");

 LinkedResource EmbeddedObjects1 = new LinkedResource("PathToImage\\image1.jpg");
 EmbeddedObjects1.ContentId = "image1.jpg";
 htmlView.LinkedResources.Add(EmbeddedObjects1);

msg.AlternateViews.Add(htmlView);
SmtpClient smtpclient = new SmtpClient("mailhost.domain.com", PortNumber);
smtpclient.Send(msg);

这里只是猜测,但是尝试将 .ContentID = 更改为:.ContentId = Guid.NewGuid().ToString();'。内容 ID 是 MIME 的一部分,文件扩展名中的 '.' 可能会让它感到困惑。 - CodingGorilla
IE里面什么也不显示了 ;) - csharptest.net
你能检查一下它显示的img标签src吗? - Pit Digger
我按照Coding Gorilla的建议删除了“.”,但仍然没有成功!@Sonesh Dabhi,img标签显示为<img src=3D"cid:image1">(在我删除.jpeg部分后)。 - newidforu
通常情况下,您会使用电子邮件阅读器而不是浏览器。至少在旧时代是这样的。这很可能是您正在使用的服务器的问题。它们经常根据用户代理字符串生成不同的HTML。 - Hans Passant
3个回答

1
也许如果您使用ContentType和Coding Gorilla的内容ID作为组合来创建LinkedResource,会有所帮助:
Guid contentId = Guid.NewGuid().ToString();

AlternateView htmlView = AlternateView.CreateAlternateViewFromString(
  "This is a sample JPG embedded image<br><img src=\"cid:" + contentId + "\">", 
  null, "text/html");

ContentType ct = new ContentType(MediaTypeNames.Image.Jpeg);

LinkedResource EmbeddedObjects1 = new LinkedResource("PathToImage\\image1.jpg", ct);
EmbeddedObjects1.ContentId = contentId;
htmlView.LinkedResources.Add(EmbeddedObjects1);

1
当我添加了ContentType ct行并将链接资源附加到它上面(如上所示),它开始对我起作用。 - bkorzynski

0

尝试添加以下内容。

msg.IsBodyHtml = true;

此外,我通常会像这样设置我的AlternateView。
AlternateView htmlView = AlternateView.CreateAlternateViewFromString(html, new ContentType("text/html"));

-1

嵌入式图片通过创建dataUrischemes来工作。IE<8不支持这些。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接