2

我使用名为 WebEngine (javafx) 的控件来显示 javamail 下载的邮件内容。当内容是纯文本或带有图像 src=http 链接的 html 时很好,但是当邮件具有嵌入图像(在 src 中有内容 id)时,控件不显示此图像(当然因为不知道它在哪里)。显示电子邮件的最佳控件是什么?如何做到这一点,当图像存储在内存中时。也许在 WebEngine 中加载邮件不是一个好主意......

4

2 回答 2

1

您需要一个URLStreamHandler来处理“cid” URL 协议并从 MIME 消息的适当部分提供数据。我相信您需要通过创建URLStreamHandlerFactory并调用URL.setURLStreamHandlerFactory 方法来配置 URLStreamHandler 。我记得的诀窍是,没有办法获得默认的 URLStreamHandlerFactory 以便您的版本可以委托给所有其他 URL 协议的默认版本。

或者,您可以将所有附件保存到磁盘,然后在显示之前处理 html 内容,以将所有 cid: 引用转换为 file: 引用。

于 2012-09-14T23:58:45.707 回答
0

我的猜测是 WebEngine 没有解码和显示多部分 mime 编码的消息,例如您试图在收到的邮件中处理的内容。如果我没记错的话,一些像 IE 这样的浏览器也没有处理多部分 mime 编码的消息(也许仍然没有)。

您可以做的是使用Mime4J之类的东西自己解码多部分消息,然后根据从多部分消息中获得的解码 mimetype 在控件(或必要的外部应用程序)中显示解码的内容部分。

于 2012-09-14T22:37:40.797 回答