2012-01-24 15 views
1

私はIdImap4 + Idmessageを使用してメールを受信して​​います。TWebBrowserに電子メールを表示する方法は?

しかし、私は見つけることができませんでした:

  1. をTWebBrowserで受信したHTML形式の電子メールの本文を表示する方法?
  2. TWebBrowserでも簡単なテキストメッセージを表示することは可能ですか?はいの場合、どうですか?

答えて

1

電子メールのHTMLを表示することは技術的に可能ですが、TWebBrowserはこの目的にはあまり適していません。 IStreamインターフェイス(たとえば、TMemoryStreamおよびTStreamAdapterクラスを使用)を介してアクセス可能なメモリにHTMLを保存し、ブラウザをTWebBrowser::Navigate2()メソッド経由で"about:blank" URLに移動し、TWebBrowser::OnDocumentCompleteイベントが発生するのを待ってクエリを実行する必要がありますIPersistStreamInitインターフェイスのドキュメントを開き、IStreamIPersistStreamInit::Load()メソッドに渡します。

電子メールからHTMLを表示するだけでなく、一般的にメモリ内HTMLを表示する微妙な癖があります。特に、電子メールのHTMLは、電子メール内の他の場所にある画像やその他のリソースに依存する可能性があります。TWebBrowserにロードすることはできません。一時ファイルに保存したり、HTMLを変更して参照することはできません。 HTML表示コンポーネント(http://www.pbear.comなど)などのサードパーティのHTMLビューアを使用して、要求されたリソースのデータを手動で提供することをお勧めします。その後、必要に応じてTIdMessageからデータを引き出すことができます。

ブラウザに他のメッセージを表示するには、最初のページが読み込まれた後でドキュメントのDOMを操作する必要があります(HTMLインラインで表示する前に変更しない限り)。

+0

残念ながら、Pbear htmlviewerはDelphi Xeをサポートしていません。他のサードパーティのHTMLビューアについて知っていますか? – Hesi

+0

このHTmlビューアのupdatdバージョンが見つかりました。ご助力ありがとうございます 。 – Hesi

-1

電子メールを「email.mhtml」として保存してから、TWebBrowserに読み込みます。 ロードするNavigateメソッドを使用します。

その後、ブラウザは必要なすべてを行います。 テキストはテキストが存在する場合はシンプルテキストとして読み込まれますが、HTML本体の場合は優先度が適用されます。

私は本当に残念ですが、レミー・ルボーの答えを修正することができますが、現時点では私は正しいと彼は間違っています。 私の目の涙でそれを言う... ガンビット

関連する問題