Delphi для отображения встроенного изображения в Outlook MSG - PullRequest
1 голос
/ 08 июня 2011

Я читаю файлы outlook msg в Delphi 2010 и отображаю html-текст сообщения в браузере сообщений. Однако он не отображает встроенное изображение. Горячее отображение встроенных изображений в сообщении Outlook? Я использую библиотеку импортированных объектов.

Ответы [ 2 ]

4 голосов
/ 08 июня 2011

Встроенные изображения в письме HTML поставляются с атрибутом src="cid:xx", где xx - идентификатор содержимого части изображения (Content-Type: application/octet-stream; Content-Disposition: inline) в сообщении MIME из нескольких частей. Вы можете декодировать и сохранить эту часть во временном файле и исправить атрибут src элемента img, чтобы он указывал на временный файл изображения. Альтернатива «подачи» изображений в браузер по асинхронному подключаемому протоколу описана здесь .

0 голосов
/ 10 января 2012

Вы можете использовать интерфейс IHTMLDocument2, чтобы выполнить работу за вас: (см .: http://k210.org/delphi/internet/23/ - создать среду выполнения IHTMLDocument2)

(note: msg = the mail message)

var
   slImages : TStringList;
   ADoc     : IHTMLDocument2;
begin
   slImages := TStringList.create;
   try
      ADoc  := CreateAndLoadIHTMLdoc2AtRuntime(sBody);
      sBody := ConvertHTMLToHTMLWithEmbeddedImages(Adoc, slImages);

      if (slImages.count=0) then
         msg.HTMLBody:= sBody
      else // add attachments + set cid's in this routine   
         SetupEmbeddedImages(msg, sBody, slImages);

   finally
      freeandNil(slImages);
   end;
end;
...