【问题标题】:Image in Email Body电子邮件正文中的图像
【发布时间】:2016-01-13 16:29:16
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    以下是文章摘要:

    CID 嵌入图像(内嵌图像)

    优点

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

    缺点

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

    内联嵌入(Base64 编码)

    优点

    • 实现起来要简单得多
    • 速度更快
    • 无需深入研究 MIME 和应用程序代码

    缺点

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

    链接图片

    优点

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

    缺点

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

    【讨论】:

    • 我已经使用了外部图片选项路由,并且只引用了直接 URL,效果很好!谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多