通过电子邮件发送带有图像的 html 文件
Posted
技术标签:
【中文标题】通过电子邮件发送带有图像的 html 文件【英文标题】:Sending html file with images via email 【发布时间】:2011-08-27 10:19:03 【问题描述】:如何在 c# 中发送带有图像的 html 邮件?我可以在我的服务器上设置直接链接到图像(类似<img src="http://mysite.ru/img.png" />
)还是我需要附加图像然后使用链接到我的附件?是否有任何示例或准备使用库? css 文件和脚本呢?
【问题讨论】:
您可以对电子邮件中的图像使用外部 URL...但是,大多数电子邮件客户端默认会阻止这些图像。使用内联附加图像会更好。 绝对 URL 应该可以正常工作。 @jnpcl 大多数客户端也会阻止内联图像。您只是不需要在允许查看后下载它们。 【参考方案1】:可能最好的选择是使用像 MvcMailer 这样的包。
Mvc Mailer 显示以下特点:
MvcMailer 使用 MVC 视图作为电子邮件正文轻松发送电子邮件。以下是功能的快速列表:
a) 使用 Razor/WebForms 视图
b) 使用母版页
c) 编写可测试的代码
d) 使用 ViewBag 或 ViewModel 将值传递给您的视图和
e) 使用 Url.Abs 方法和生成绝对 URL
f) 只需添加视图文件即可创建多部分电子邮件,
g) 为您的邮件搭建支架。 MvcMailer 有一个扩展 ControllerBase 类的 MailerBase 类。
所以,邮件程序就像您的控制器一样。因此,您可以在没有任何学习曲线的情况下使用所有控制器好东西。最终结果是一个具有专业外观的 HTML 电子邮件正文,可供您发送给您的网站用户。
访问项目站点以获取有关 MvcMailer 的综合教程。 https://github.com/smsohan/MvcMailer/wiki/MvcMailer-Step-by-Step-Guide
在步骤指南中,您将了解如何使用图像发送电子邮件。
brgds。 塞巴斯蒂安。
【讨论】:
【参考方案2】:见http://en.wikipedia.org/wiki/MHTML:
MHTML 是 MIME HTML 的缩写,是一种网络 用于组合的页面归档格式 通常是资源 由外部链接表示(例如 图像、Flash 动画、Java 小程序、音频文件)以及 HTML 代码到单个文件中。这 MHTML 文件的内容被编码为 如果是 HTML 电子邮件, 使用 MIME 类型 multipart/related。 文件的第一部分通常是 编码的 HTML;随后的部分是 确定的额外资源 他们的原始 URL 和编码在 基数 64。这种格式有时 简称MHT,后缀 默认情况下为此类文件提供 .mht 当由 Microsoft Word 创建时, Internet Explorer 或 Opera。 MHTML 是 一个提议的标准,在一个 1999 年修订版为 RFC 2557。
更多地了解 MHTML 可能是解决问题的关键。
【讨论】:
哎哟!我猜,没有一件好事会受到惩罚。无论如何,我承认我最喜欢 Dave 的回答,因为该 systemnetmail 站点上有代码示例等。尽管如此,HTML 电子邮件和 MHTML 是相关的 - 总是很高兴知道幕后发生了什么。【参考方案3】:如果您直接将链接嵌入到电子邮件中(指向外部服务器),您将被大多数客户端阻止,但用户可以打开它们。
它们可以以通常的方式嵌入:
<img src="http://go.com/go.gif" />
如果您需要它默认显示,您需要将图像作为附件嵌入并链接到该附件。
见:http://www.systemnetmail.com/faq/2.6.aspx
【讨论】:
【参考方案4】:有多种编码内嵌图像的方法。我们在内部使用 VB.NET,这个站点是一个很好的参考http://www.systemnetmail.com/default.aspx
【讨论】:
【参考方案5】:对于 CSS,通常使用内联样式并且没有引用文件,另一侧的图像应该只是链接,而不是随电子邮件发送。您只需将邮件内容声明为 html 即可。 javascript 也是可用的,我使用它进行一些重新定位。
【讨论】:
以上是关于通过电子邮件发送带有图像的 html 文件的主要内容,如果未能解决你的问题,请参考以下文章
当我们使用 phpMailer 发送带有动态内容的邮件时,如何在电子邮件正文中显示多个内联图像