Outlook HTML Mail - изменение связанных элементов на встроенные - PullRequest
2 голосов
/ 02 февраля 2009

Я пытаюсь отправить письма в формате HTML с помощью C # 3 через Outlook.MailItem

Outlook.MailItem objMail = (Outlook.MailItem)olkApp.CreateItem(Outlook.OlItemType.olMailItem);
objMail.To = to;
objMail.Subject = subject;
objMail.HTMLBody = htmlBody;

Электронное письмо генерируется извне путем сохранения из элемента управления RTF (TX Text Control), который выдает HTML со ссылками на изображения, хранящиеся в подкаталоге <<FileName>> _files. Пример:

<img border="0" src="file:///C:/Documents%20and%20Settings/ItsMe/Local%20Settings/Temp/2/zbt4dmvs_Images/zbt4dmvs_1.png" width="94" height="94" alt="[image]">

При отправке электронного письма таким образом создается письмо с неработающими ссылками.

При использовании Outlook 2007 в качестве почтового клиента с Word в качестве редактора электронной почты при переключении на RTF (вкладка «Параметры», группа вкладок «Формат») сохраняется макет и для вставки изображений.

Программно это сделать:

var oldFormat = objMail.BodyFormat;
objMail.BodyFormat = Outlook.OlBodyFormat.olFormatRichText;
objMail.BodyFormat = oldFormat;

теряет форматирование и искажает изображения (изображение становится маркером ссылки [image] на экране, который можно нажимать, но больше не показывает изображение). Это не удивительно, учитывая, что в документации для MailItem.BodyFormat Property написано " Все форматирование текста будет потеряно при переключении свойства BodyFormat с RTF на HTML и наоборот ».

К сожалению, кажется, нет простого способа изменить Type каждого Attachment в MailItem.Attachements на OlAttachmentType.olByValue, так как это свойство только для чтения, которое устанавливается при создании Attachment.

Подход, который приходит на ум, состоит в том, чтобы пройтись по HTML, заменив теги <code><img> маркерами и программно пройдя текст MailItem, вставив Outlook.Attachment из Type OlAttachmentType.olByValue.

Другой вариант - преобразовать ссылки <code><img> в <code>src="cid:uniqueIdN" и добавить изображения в виде вложений с указанными именами.

Итак, к вопросу ... Есть ли способ конвертировать связанные изображения во встроенные изображения, в идеале, без использования сторонних инструментов, таких как Redemption? Преобразование в RTF приводит к результату, но выполнение этого способа ни в коем случае не является обязательным условием, и, очевидно, может потерять верность - я просто хочу, чтобы это просто работало: D Ни одна из моих существующих идей не кажется мне чистой.

Ответы [ 2 ]

1 голос
/ 02 февраля 2009

Поскольку вы используете .net> 2.0, вы можете захотеть заглянуть в пространство имен System.Net.Mail для создания почтовых сообщений. Я обнаружил, что это довольно настраиваемый и очень простой в использовании для задачи, аналогичной вашей. Единственными проблемами, которые у меня были, было то, что я использовал правильную кодировку , и мне пришлось использовать таблицы HTML для макетов (css не будет работать правильно). Вот несколько ссылок, чтобы показать вам, как это работает ...

Если это не вариант, я бы порекомендовал пойти по маршруту Content ID и внедрить изображения в виде вложений. Другой вариант - публично разместить изображения на веб-сайте и изменить ссылки на изображения в html на общедоступные изображения.

Что вам следует знать, так это то, что электронные письма в формате HTML могут легко выглядеть как спам и могут рассматриваться как таковые почтовыми серверами и клиентами. Даже те, которые предназначены только для внутреннего использования (это случилось со мной), могут оказаться в папке нежелательной почты Outlook.

0 голосов
/ 02 февраля 2009

DOH !, фактически отправка электронной почты в Outlook 2007 заставляет изображения встраиваться.

Размер отправленного элемента в 8 КБ намного меньше, чем размер черновика 60 КБ (RTF), который я видел по сравнению с размером черновика 1 КБ (HTML, который не был преобразован в RTF и обратно).

Так что все это время я делал то, что имею в виду. Grr.

Я оставлю здесь Q и A на случай, если это поможет кому-то с таким же запутанным состоянием ума.

Кстати, некоторые полезные ссылки, которые я нашел в своем путешествии:

Пример отправки электронной почты

Общий сайт вопросов и ответов с другими примерами различного качества

...