Question

Does anybody know how to generate .mht file programmatically in C#, with embedded images in it? The thing is i have realised that .mht files are capable of embedding images in them, and this embedded images moves with the whole file(mht) when you change its location. And this file can be viewed on different browsers, including IE 6.

I was told to try Data Url Scheme technique. But it couldn't work because its not supported by other browsers. e.g IE 6.

Was it helpful?

Solution

It is possible and has definitely been done by others - relevant material and libraries/source code:

OTHER TIPS

In a Windows environment you can do this directly by means of the CDO.Message COM component, which exposes the IMessage interface
I dont know the details of importing COM objects in C# so I'll give you a quick example in C-like syntax:

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

The CLSID of the CDO.Message components is {CD000001-8B95-11D1-82DB-00C04FB1625D}

Keep in mind though, that this component is meant for generating e-mail messages (.eml file extension rather than .mht) which means JavaScript files are not included. Otherwise they are roughly equivalent.

MSDN has a great article (June 2011) about how to create an MHT file using both CDO and System.Net.Mail. C# source code is included in-full. I would use this above the VB.Net or Google Code version.

I'd start with RFC 2557 so that I had some basic understanding of what I was working with. Then go look for code/libraries that deal with it.

To my knowledge there are no BCL classes to deal with MHTML.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top