Как отобразить электронную почту на TWebBrowser? - PullRequest
1 голос
/ 25 января 2012

Я использую IdImap4 + Idmessage для получения электронных писем.

Но я не смог узнать:

  1. как отобразить полученное тело письма в формате HTML на TWebBrowser?
  2. Можно ли показывать простые текстовые сообщения на TWebBrowser? Если да, то как?

Ответы [ 2 ]

1 голос
/ 25 января 2012

Технически возможно отобразить HTML-код электронной почты, однако TWebBrowser не совсем подходит для этой цели.Вам необходимо сохранить HTML-код в памяти, доступной через интерфейс IStream (например, с помощью классов TMemoryStream и TStreamAdapter), затем перейдите к браузеру по URL-адресу "about:blank" с помощью метода TWebBrowser::Navigate2() идождитесь возникновения события TWebBrowser::OnDocumentComplete, затем запросите документ для интерфейса IPersistStreamInit и передайте IStream методу IPersistStreamInit::Load().

Существуют тонкие причуды с отображением HTML в памяти вВообще, не говоря уже о отображении HTML из электронной почты.В частности, HTML-код электронной почты может зависеть от изображений и других ресурсов, расположенных в других местах электронной почты, которые нельзя загрузить в TWebBrowser без сохранения их во временных файлах и изменения HTML-кода для обращения к ним.Вам лучше использовать стороннюю программу просмотра HTML, такую ​​как компоненты просмотра HTML из http://www.pbear.com,, которые поддерживают ручное предоставление данных для запрашиваемых ресурсов.Затем вы можете извлекать данные из TIdMessage по мере необходимости.

Чтобы отобразить другие сообщения в браузере, вам, вероятно, придется манипулировать DOM документа после загрузки начальной страницы (если только вы не изменили встроенный HTML-код).перед его отображением).

0 голосов
/ 17 августа 2013

Сохраните вашу электронную почту как «email.mhtml», а затем загрузите на TWebBrowser.используйте метод Navigate для загрузки.

После этого браузер сделает все, что вы хотите.Будет читать текст как простой текст, когда он будет существовать, но приоритет будет для тела HTML.

Мне очень жаль исправлять ответ Реми Лебо, но в настоящее время я прав, а он неправ.Я говорю это со слезами на глазах ... Гамбит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...