генерировать файл .mht программно - PullRequest
8 голосов
/ 03 апреля 2012

Кто-нибудь знает, как программно создать файл .mht в C # со встроенными изображениями в нем?Дело в том, что я понял, что файлы .mht способны встраивать в них изображения, и эти встроенные изображения перемещаются вместе со всем файлом (mht) при изменении его местоположения.И этот файл можно просматривать в разных браузерах, включая IE 6.

Мне сказали попробовать технику Data Url Scheme.Но это не могло работать, потому что не поддерживается другими браузераминапример, IE 6.

Ответы [ 4 ]

6 голосов
/ 22 июня 2012

В среде Windows вы можете сделать это напрямую с помощью компонента CDO.Message COM, который предоставляет интерфейс IMessage
Я не знаю деталей импорта COM-объектов в C #, поэтому приведу краткий пример синтаксиса, подобного 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

CLSID компонентов CDO.Message: {CD000001-8B95-11D1-82DB-00C04FB1625D}

Имейте в виду, что этот компонент предназначен для генерации сообщений электронной почты (расширение файла .eml, а не .mht), что означает, что файлы JavaScript не включены. В противном случае они примерно эквивалентны.

5 голосов
/ 03 апреля 2012

Это возможно и определенно было сделано другими - соответствующие материалы и библиотеки / исходный код:

1 голос
/ 09 марта 2013

В MSDN есть отличная статья (июнь 2011 г.) о том, как создать файл MHT с использованием CDO и System.Net.Mail.Исходный код C # включен полностью.Я хотел бы использовать это выше версии VB.Net или Google Code.

1 голос
/ 03 апреля 2012

Я бы начал с RFC 2557 , чтобы у меня было общее представление о том, с чем я работал.Затем найдите код / ​​библиотеки , которые занимаются этим.

Насколько мне известно, нет никаких классов BCL для работы с MHTML.

...