我正在使用IdImap4 + Idmessage來接收電子郵件。如何在TWebBrowser上顯示電子郵件?
但我無法找出:
- 如何在TWebBrowser顯示接收HTML格式的電子郵件的身體嗎?
- 是否有可能在TWebBrowser上顯示簡單的文本消息呢?如果是,如何?
我正在使用IdImap4 + Idmessage來接收電子郵件。如何在TWebBrowser上顯示電子郵件?
但我無法找出:
顯示電子郵件的HTML在技術上是可行的,但TWebBrowser
並不適合此目的。您需要將HTML存儲在可通過IStream
接口(例如使用TMemoryStream
和TStreamAdapter
類)訪問的內存中,然後通過TWebBrowser::Navigate2()
方法瀏覽器到"about:blank"
URL,然後等待TWebBrowser::OnDocumentComplete
事件觸發,然後查詢該文檔爲其IPersistStreamInit
接口並將IStream
傳遞給IPersistStreamInit::Load()
方法。
通常顯示內存中的HTML有微妙的怪癖,更不用說顯示電子郵件中的HTML。特別是,電子郵件的HTML可能依賴於位於電子郵件其他地方的圖像和其他資源,如果不將它們保存到臨時文件並更改HTML以引用它們,則無法加載到TWebBrowser
中。您最好使用第三方HTML查看器,例如http://www.pbear.com的HTML查看組件,它們支持手動爲請求的資源提供數據。然後,您可以根據需要從TIdMessage
中提取數據。
要在瀏覽器中顯示其他消息,在加載初始頁面之後(除非在顯示它之前更改內聯HTML),您可能必須操作文檔的DOM。
將您的電子郵件保存爲「email.mhtml」,然後在TWebBrowser上加載。 使用Navigate方法加載。
之後,瀏覽器將盡你所能。 當他存在時會將文本讀取爲簡單文本,但優先級將用於HTML主體。
我真的很遺憾糾正雷米Lebeau答案,但在這個時候我是對的,他是錯的。 我說眼淚在我的眼裏... Gambit
不幸的是Pbear htmlviewer不支持Delphi Xe。你知道任何其他第三方的HTML瀏覽器嗎? – Hesi
我找到了這個HTml Viewer的更新版本。非常感謝您的幫助 。 – Hesi