Delphi 如何在TWebBrowser上显示电子邮件?

Delphi 如何在TWebBrowser上显示电子邮件?,delphi,email,rendering,Delphi,Email,Rendering,我正在使用IdImap4+Idmessage接收电子邮件 但我没有发现: 如何在TWebBrowser上显示收到的HTML格式的电子邮件正文 是否也可以在TWebBrowser上显示简单的文本消息?如果是,如何进行 从技术上讲,显示电子邮件的HTML是可能的,但是TWebBrowser并不真正适合此用途。您需要将HTML存储在内存中,通过IStream接口(例如通过使用TMemoryStream和TStreamAdapter类)可以访问该HTML,然后通过TWebBrowser::Navigat

我正在使用IdImap4+Idmessage接收电子邮件

但我没有发现:

  • 如何在TWebBrowser上显示收到的HTML格式的电子邮件正文
  • 是否也可以在TWebBrowser上显示简单的文本消息?如果是,如何进行

  • 从技术上讲,显示电子邮件的HTML是可能的,但是
    TWebBrowser
    并不真正适合此用途。您需要将HTML存储在内存中,通过
    IStream
    接口(例如通过使用
    TMemoryStream
    TStreamAdapter
    类)可以访问该HTML,然后通过
    TWebBrowser::Navigate2()将浏览器导航到
    “about:blank”
    URL
    方法并等待触发
    TWebBrowser::OnDocumentComplete
    事件,然后查询文档的
    IPersistStreamInit
    接口,并将
    IStream
    传递给
    IPersistStreamInit::Load()
    方法

    一般来说,在内存中显示HTML有一些微妙的怪癖,更不用说显示电子邮件中的HTML了。特别是,电子邮件的HTML可能依赖于位于电子邮件其他位置的图像和其他资源,如果不将它们保存到临时文件并更改HTML以引用它们,则无法将其加载到
    TWebBrowser
    。您最好使用第三方HTML查看器,如中的HTML查看组件,该组件支持为请求的资源手动提供数据。然后,您可以根据需要从
    TID消息中提取数据

    要在浏览器中显示其他消息,您可能必须在加载初始页面后操作文档的DOM(除非在显示之前更改HTML内联)。

    将您的电子邮件另存为“email.mhtml”,然后在TWebBrowser上加载。 使用导航方法加载

    之后,浏览器将执行所有您想要的操作。 当他存在时,他将以简单文本的形式阅读文本,但优先考虑HTML正文

    我真的很抱歉纠正雷米·勒博的回答,但此时我是对的,他是错的。 我眼里含着泪水说。。。
    Gambit

    不幸的是,Pbear htmlviewer不支持Delphi Xe。你知道其他第三方html查看器吗?我找到了这个html查看器的更新版本。非常感谢你的帮助。