电子邮件正文中的图像

Image in Email Body

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

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

我会推荐外部托管,因为它最容易做到并且允许轻量级电子邮件(可能提高送达率)。嵌入的图像在某些电子邮件客户端中不显示,因此这也可能导致问题。

请参阅这篇文章,了解有关外部 link 与嵌入图像的一些有用 in-depth 信息。 https://sendgrid.com/blog/embedding-images-emails-facts/

以下是文章的概要:

CID 嵌入图像(内联图像)

优点

  • 已经存在很长时间了
  • 使用确保 multiplart/related
  • 的正确 mime-type

缺点

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

内联嵌入(Base64编码)

优点

  • 更容易实现
  • 做起来快得多
  • 不需要深入研究 MIME 和应用程序代码

缺点

  • 确实会增加电子邮件的大小,尤其是当您使用超过 一张图片
  • 很可能在许多网络邮件服务中被默认阻止
  • 在 Outlook 中完全被阻止

链接图片

优点

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

缺点

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