我使用名为WebEngine(javafx)的控件来显示javamail下载的邮件内容。当内容是纯文本或带有图像src = http链接的html时,它很好,但是当邮件嵌入图像(在src中有内容id)时,控件不显示这些图像(cource因为不知道它在哪里)。显示电子邮件的最佳控件是什么?当图像存储在存储器中时,怎么做呢。也许在WebEngine中加载邮件不是一个好主意......
答案 0 :(得分:1)
您需要一个处理“cid”URL协议的URLStreamHandler,并从MIME消息的相应部分提供数据。我相信您需要通过创建URLStreamHandlerFactory并调用URL.setURLStreamHandlerFactory method来配置URLStreamHandler。我记得,诀窍在于,无法获取默认的URLStreamHandlerFactory,以便您的版本可以委托所有其他URL协议的默认版本。
或者,您可以将所有附件保存到磁盘,然后在显示之前处理html内容,将所有cid:references转换为file:references。
答案 1 :(得分:0)
我的猜测是WebEngine没有解码和显示多部分mime编码的消息,例如您尝试在传入邮件中处理的消息。如果我没记错的话,像IE这样的浏览器也没有处理多部分mime编码的消息(可能仍然没有)。
您可以做的是使用类似Mime4J的内容自行解码多部分消息,然后根据您从多部分消息中获得的解码的mimetype,在控件(或必要的外部应用程序)中显示已解码的内容部分。