Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javamail和Javafx。读取并显示邮件嵌入的图像_Java_Jakarta Mail_Javafx - Fatal编程技术网

Javamail和Javafx。读取并显示邮件嵌入的图像

Javamail和Javafx。读取并显示邮件嵌入的图像,java,jakarta-mail,javafx,Java,Jakarta Mail,Javafx,我使用名为WebEngine(javafx)的控件来显示javamail下载的邮件内容。当内容是纯文本或带有图像src=http链接的html时,这很好,但是当邮件有嵌入的图像(在src中有内容id)时,控件不显示这些图像(当然,因为不知道它在哪里)。显示电子邮件的最佳控件是什么?如何做到这一点,当图像存储在内存中。也许在WebEngine中加载邮件不是一个好主意…我的猜测是WebEngine没有解码和显示多部分mime编码的消息,例如您试图在传入邮件中处理的消息。如果我没记错的话,有些浏览器,

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

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

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

  • 将能够显示一系列mime类型,如text/html, 文本/普通、图像/jpeg等
  • pdf文件可以通过以下方式显示:
  • 文本/纯文本可以由呈现
  • 各种image/*mime类型可以由呈现
  • 任何JavaFX控件本机不支持的word文档和其他格式可以写入文件,并通过或启动
您需要一个用于处理“cid”URL协议并从MIME消息的适当部分提供数据的接口。我相信您需要通过创建并调用来配置URLStreamHandler。我记得,诀窍在于无法获取默认的URLStreamHandlerFactory,以便您的版本可以将所有其他URL协议委托给默认版本

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