以编程方式生成.mht文件

有人知道如何在C#中以编程方式生成.mht文件,其中包含嵌入的图像吗? 事情是我已经意识到.mht文件能够在其中嵌入图像,并且当您更改其位置时,此嵌入图像随整个文件(mht)移动。 此文件可以在不同的浏览器上查看,包括IE 6。

我被告知要尝试Data Url Scheme技术。 但它无法正常工作,因为它不受其他浏览器的支持。 例如IE 6。

它是可能的,并且肯定是由其他人完成的 – 相关材料和库/源代码:

  • RFC 2557是MHT格式的基础
  • 用于从URL生成MHT文件的VB.NET源代码
  • Chilkat MHT .NET库 (商业)
  • ASPNetMHT (商业)
  • 用于从URL生成MHT文件的C#源代码
  • CDO.Message COM组件,公开IMessage接口

在Windows环境中,您可以通过CDO.Message COM组件直接执行此操作,该组件公开IMessage接口
我不知道在C#中导入COM对象的细节,所以我将给你一个类似C语法的快速示例:

IMsgObj = CreateObject("CDO.Message") // create the object IMsgObj.CreateMHTMLBody("http://www.example.com/") // convert the URL to MHTML IMsgObj.GetStream().SaveToFile("output.mht") // save it to a file 

CDO.Message组件的CLSID是{CD000001-8B95-11D1-82DB-00C04FB1625D}

但请记住,此组件用于生成电子邮件(.eml文件扩展名而不是.mht),这意味着不包含JavaScript文件。 否则他们大致相当。

我从RFC 2557开始,以便我对我正在使用的内容有一些基本的了解。 然后去寻找处理它的代码/库 。

据我所知,没有BCL课程来处理MHTML。

MSDN有一篇很棒的文章 (2011年6月),关于如何使用CDO和System.Net.Mail创建MHT文件。 C#源代码包含在内。 我会在VB.Net或Google Code版本之上使用它。