C#Email嵌入式图像不在IE中显示

时间:2011-07-22 19:35:05

标签: c# .net image internet-explorer email

我正在使用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);

3 个答案:

答案 0 :(得分:1)

如果您使用ContentType创建LinkedResource并将Coding Gorilla的guid想法作为content-id创建它可能会有所帮助:

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 :(得分:0)

尝试添加以下内容。

msg.IsBodyHtml = true;

此外,我通常会设置我的AlternateView。

AlternateView htmlView = AlternateView.CreateAlternateViewFromString(html, new ContentType("text/html"));

答案 2 :(得分:-1)

嵌入图片的工作原理是创建dataUri schemes。 IE&lt; 8不支持这些。