2016-06-19 3 views
1

Прошу вас, есть длинная история. Речь идет о программном создании HTML-сообщений электронной почты из Delphi-7, отправке их в Outlook и не отображении изображений в нем, поэтому, если вы ничего не знаете об этом, не утруждайте себя чтением всего.Как сообщить Outlook, где находятся файлы изображений?

У меня есть приложение, которое отправляет текстовые сообщения с переменным текстом из программы Delphi-7 в Outlook. Я использую элемент TMailInfo, использую HTML-файл шаблона для макета, заменяю заполнители данными из программы (% NAME% становится «Johnson» и т. Д.), Создайте новое сообщение Outlook и заполните HTML-код моим результатом. Все это прекрасно.

Недавно мой клиент отправил мне новое примерное сообщение с вопросом, могу ли я изменить это электронное письмо на новый макет, когда он послал меня. Поэтому я сохранил E-mail как html (из Outlook, создав огромный HTML-файл, полный кода, который вряд ли понятен для не-HTML-гуру, подобного мне)), заменил статические данные моими заполнителями и сохранил его как новый шаблон.

Это сработало отлично, за исключением одного - новый макет включал некоторые локальные изображения (недоступные с общедоступного веб-ресурса). Когда оригинальная почтовая рассылка из Outlook, две вещи были созданы - htm-файл с html-кодом с именем «Subject» и папкой под названием «Subject_files», содержащей файлы изображений, а также файлlistlist.xml и файл mso.

Сгенерированный HTML относится к картинам, как SRC = «subject_files/image001.jpg»> и т.д.

Когда я отправить HTML в Outlook, это, очевидно, не имеет ни малейшего представления, где изображения - но как я скажи ему?

Что я пробовал:

  • копирование "subject_files" папку в "Мои документы"

  • жестко прописывать ссылки на фотографии в различных форматах (т.е.

ЦСИ = "C: /test/subject_files/image001.jpg",

src = "C: // test/subject_fi ле/image001.jpg»,

SRC = "C: \ Test \ subject_files \ image001.jpg",

и т.п.

но оба не работают ... так что мой вопрос действительно, как мне сообщить Outlook, где искать файлы изображений при программном создании HTML-сообщения?

Заранее благодарен!

ответ

3

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

Использование aboslute ссылки

<img src="http://www.example.com/images/header.jpg"> 

Используйте встроенные изображения

Преобразование изображения в base64, вы можете найти множество веб-сайтов в Интернете к тому, что, как https://www.base64-image.de/ затем

<img src="data:image/jpg;base64,/*base64-generated-string*/" /> 
+1

Третьим вариантом является прикрепление изображений к письму с присвоенными им значениями Content-ID. И тогда HTML может использовать '' для ссылки на эти вложения. –

+0

Параметр номер два не будет работать в Outlook - HTML-сообщения отображаются Word, а не Outlook, и он не понимает изображения src = "data: image". –

1

Как упоминалось Remy, изображения могут быть добавлены как обычные вложения. Затем вам необходимо установить свойство PR_ATTACH_CONTENT_ID (имя DASL http://schemas.microsoft.com/mapi/proptag/0x3712001F), используя Attachment.PropertyAccessor.SetProperty. Тело HTML должно использовать значение соответствия для атрибута cid - <img src="cid:xyz">, где «xyz» - это значение свойства PR_ATTACH_CONTENT_ID.

+0

Спасибо, но это так Microsoftic снова ... ненужно сложным, вероятно очень полезным для краевых случаев, но утомительным для выяснения в очень простых случаях использования ... Я пойду на «публично размещенный» маршрут. Спасибо, тем не менее! – Jur

+0

Здесь действительно ничего сложного - так выглядят Outlook и все другие почтовые клиенты годами и годами .. –

Смежные вопросы