Я пытаюсь отправить письма в формате 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 Ни одна из моих существующих идей не кажется мне чистой.