2012-01-24 29 views
1

我正在使用IdImap4 + Idmessage來接收電子郵件。如何在TWebBrowser上顯示電子郵件?

但我無法找出:

  1. 如何在TWebBrowser顯示接收HTML格式的電子郵件的身體嗎?
  2. 是否有可能在TWebBrowser上顯示簡單的文本消息呢?如果是,如何?

回答

1

顯示電子郵件的HTML在技術上是可行的,但TWebBrowser並不適合此目的。您需要將HTML存儲在可通過IStream接口(例如使用TMemoryStreamTStreamAdapter類)訪問的內存中,然後通過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。

+0

不幸的是Pbear htmlviewer不支持Delphi Xe。你知道任何其他第三方的HTML瀏覽器嗎? – Hesi

+0

我找到了這個HTml Viewer的更新版本。非常感謝您的幫助 。 – Hesi

-1

將您的電子郵件保存爲「email.mhtml」,然後在TWebBrowser上加載。 使用Navigate方法加載。

之後,瀏覽器將盡你所能。 當他存在時會將文本讀取爲簡單文本,但優先級將用於HTML主體。

我真的很遺憾糾正雷米Lebeau答案,但在這個時候我是對的,他是錯的。 我說眼淚在我的眼裏... Gambit

相關問題