电子邮件正文中的图像

时间:2016-01-13 16:29:16

标签: image asp.net-mvc-4 c#-4.0 html-email

我正在使用StringBuilder构建一个电子邮件正文。我需要在电子邮件的末尾插入一个图像作为签名。

我的图片位于我的MVC解决方案中的一个文件夹中。我可以浏览图像的来源,并且可以正常工作。

如果我浏览到: http://localhost/Content/images/CustomerSatisfaction.jpg,我得到了返回的图片,刚才将此图片作为电子邮件正文的一部分

string imgSrc = string.Format("@{0}{1}", HttpContext.Current.Request.Url.Authority,
"/Content/images/CustomerSatisfaction.jpg");

StringBuilder sb = new StringBuilder();
sb.AppendLine("<html>");
sb.AppendLine("<body>");
sb.AppendLine(string.Format("<img src='{0}' alt='xxx'>", imgSrc));
sb.AppendLine("</body>");
sb.AppendLine("</html>");

我还为我的图像源尝试了几个版本:

string imgSrc = "~/Content/images/CustomerSatisfaction.jpg";

1 个答案:

答案 0 :(得分:2)

图片需要在电子邮件外部托管或嵌入。

我建议外部托管,因为它是最容易做的,并允许轻量级电子邮件(可能增加可传递性)。某些电子邮件客户端中不显示嵌入的图像,因此也可能导致问题。

有关外部链接与嵌入图像的一些深入信息,请参阅此文章。 https://sendgrid.com/blog/embedding-images-emails-facts/

以下是文章的快速概要:

CID嵌入式图像(内嵌图像)

赞成

  • 已经存在了很长时间
  • 用法确保了多重/相关的正确mime类型

缺点

  • 增加整体电子邮件的大小
  • 改变电子邮件客户端的结果,尤其是网络邮件
  • 感觉过时
  • 付出更多努力
  • 较少技术人员实现

内联嵌入(Base64编码)

赞成

  • 更容易实现
  • 要快得多
  • 要求深入研究MIME和应用程序代码

缺点

  • 真的可以增加电子邮件的大小,特别是如果你使用的话 一个图像
  • 很可能在许多网络邮件服务中默认阻止
  • 在Outlook中完全阻止

已关联的图片

赞成

  • 保持电子邮件重量轻盈
  • 需要额外的努力
  • 发送
  • 后允许更改图像

缺点

  • 在大多数情况下遇到与base64编码相同的阻塞问题 服务
  • 需要从外部服务器下载