我使用名为 WebEngine (javafx) 的控件来显示 javamail 下载的邮件内容。当内容是纯文本或带有图像 src=http 链接的 html 时很好,但是当邮件具有嵌入图像(在 src 中有内容 id)时,控件不显示此图像(当然因为不知道它在哪里)。显示电子邮件的最佳控件是什么?如何做到这一点,当图像存储在内存中时。也许在 WebEngine 中加载邮件不是一个好主意......
问问题
1567 次
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 在控件(或必要的外部应用程序)中显示解码的内容部分。
- WebView将能够显示一堆 mime 类型,如 text/html、text/plain、image/jpeg 等。
- pdf 可以使用JPedalFX PDF Viewer显示。
- text/plain 可以由Label呈现。
- ImageView可以呈现各种 image/* mime 类型。
- 任何 JavaFX 控件本身不支持的 word 文档和其他格式可以写入文件并通过HostServices.showDocument或DeskTop.open 启动。
于 2012-09-14T22:37:40.797 回答