当我使用空闲管理器时,我得到了这个例外。 因为我已经看过这个答案[Exception in thread "main" javax.mail.MessagingException: Folder is not using SocketChannels
我尝试了
properties.setProperty(" mail.imap.usesocketchannels"," true");
但它不能使用我的代码,但仍然出现了这个例外。
Properties properties = new Properties();
properties.put("mail.imap.host", mailReceiveServer);
properties.put("mail.imap.auth", validate ? "true" : "false");
properties.put("mail.imap.port", mailReceivePort);
properties.put("mail.imap.ssl.enable", "true");
properties.put("mail.imap.partialfetch", false);
properties.put("mail.event.scope", "session");
properties.put("mail.imap.ssl.checkserveridentity", "false");
properties.put("mail.imap.ssl.trust", "*");
properties.put("mail.store.protocol", "imap");
properties.put("mail.event.executor", es);
properties.setProperty("mail.imap.usesocketchannels", "true");
我的财产有问题吗?
答案 0 :(得分:1)
这似乎与Issue 403- Android SocketChannel workaround not working around有关。
默认情况下,安全套接字的Android实现不会返回套接字通道。 JavaMail的早期版本使用反射来访问套接字并创建通道。后来,Android更新为使用Conscrypt提供SSL套接字。它也不会返回套接字通道,但是,现有的JavaMail解决方法不起作用,因为包装的套接字位于JavaMail所不希望的更深的子类中。
应用于JakartaMail 2.0.0 / Jakarta EE 9的修复程序应更正您遇到的问题。