Составной HTML и встроенные изображения из .NET без доступа к диску? - PullRequest
1 голос
/ 21 августа 2009

Я работаю над продуктом, который создает вывод MS Word, генерируя документ HTML с соответствующими битами Word CSS и волшебства XML, встроенного в него. Теперь мне нужно встроить RTF (изображения и стилизованный текст) в документ, и поэтому я рассматриваю возможности многоэлементной генерации HTML в .NET.

Я хотел бы сгенерировать документ MHTML, преобразовав фрагменты RTF в изображения в памяти, а затем просто внедрив данные в кодировке Base64 непосредственно в объект MHTML. Пока что я не могу найти никаких решений .NET для этого.

Материал MS CDO перспективен, но, похоже, единственный способ создать вложение - предоставить URL-адрес данным и использовать AddRelatedBodyPart () , чтобы добавить его в объект.

Пакет System.Net.Mail также выглядит убедительно (как описано здесь и в предыдущем вопросе здесь ), но я не вижу простого способа преобразования сгенерированного почтовый объект в строку - кажется, что API сосредоточен на отправке почтовых сообщений, а не на создании файлов.

Прямо сейчас я продвигаюсь с подходом, который использует CDO и временные каталоги, но я недоволен этим как долгосрочным подходом. Есть лучшие предложения?

Ответы [ 2 ]

1 голос
/ 25 августа 2009

У System.Net.Mail не было особой потребности в отправке своих выходных данных в какой-то поток, определенный пользователем, но об этом говорили. Можете ли вы дать мне больше информации о вашем сценарии? Я хотел бы знать, как люди используют это с точки зрения обоснования для добавления этой функции.

Я думаю, что вы могли бы использовать отражение, чтобы перенаправить выходной поток из FileStream в какой-то другой поток перед отправкой сообщения. Большая часть кода в System.Net.Mail использует декораторы вокруг объектов Stream, поэтому я подозреваю, что это возможно, но я недостаточно хорошо знаю рефлексию, чтобы дать вам хороший фрагмент кода о том, как это сделать. Кроме того, System.Net.Mail использует собственный кодировщик base64, так что это достаточно быстро. Я также внес некоторые изменения в .Net 4.0, чтобы вы, вероятно, получили еще лучшую производительность, хотя я сомневаюсь, что это было бы заметно.

0 голосов
/ 21 августа 2009

Поддержка кодирования Base64 в .NET не очень быстрая, а System.Net.Mail не универсальная. Я завелся с помощью CHilkat S / MIME , и он работал нормально.

...