我编写了一个软件,基本上可以登录到邮件帐户并在收件箱文件夹中搜索未读电子邮件,并查看主题是否是指定的主题,然后获取其附件并对其进行处理。然后将此软件部署到 IBM 规则执行服务器上,并通过 SOAP 启动。
为此,我正在使用Javamail 1.6。以下代码片段在本地工作正常:
Session session = Session.getInstance(mailProperties);
try (Store store = session.getStore(mailProperties
.getProperty("mail.store.protocol"))) {
store.connect(mailProperties.getProperty("mail.imap.host"),
mailProperties.getProperty("mail.user"),
mailProperties.getProperty("mail.password"));
邮件属性事先已正确初始化,依此类推。部署完整代码后,SOAPUI 提供了以下 NoSuchProviderException:
Caused by: javax.mail.NoSuchProviderException: imaps
at javax.mail.Session.getService(Session.java:842)
at javax.mail.Session.getStore(Session.java:626)
at javax.mail.Session.getStore(Session.java:602)
我试图将提供程序包含在
Provider provider = new Provider(...);
store.connect(provider);
尽管这导致了相同的例外。
之后,我试图通过将存储初始化为 IMAPSSLStore 来完全避免提供程序,但这给我带来了java.lang.LinkageError
。尝试以不同的方式解决此问题(包括将类加载器设置为其他方式)无济于事。
老实说,我现在对如何进行这项工作有点不知所措。
在我看来,很难找到应该包含在javax.mail.jar中的提供程序。
您可能遇到了这个JDK错误,该错误已在较新版本的JDK中修复。 您的服务器使用的是哪个版本的 JDK?
我自己找到了问题的答案。IBM 包含的 Liberty 服务器在服务器.xml中有一个功能部件管理器。在那里你需要输入:
<feature>javaMail-1.5</feature>
使其-.-工作