GNU JavaMail:没有地址rfc822的提供程序
使用OpenJDK1.7.0和GNUJavaMail 1.1.2 在实际的消息发送呼叫过程中:GNU JavaMail:没有地址rfc822的提供程序,java,ant,jakarta-mail,Java,Ant,Jakarta Mail,使用OpenJDK1.7.0和GNUJavaMail 1.1.2 在实际的消息发送呼叫过程中: SMTPTransport.send(msg); 发生这种情况: javax.mail.NoSuchProviderException: No provider for address: rfc822 at javax.mail.Session.getTransport(Session.java:641) at javax.mail.Transport.doSend(Transpor
SMTPTransport.send(msg);
发生这种情况:
javax.mail.NoSuchProviderException: No provider for address: rfc822
at javax.mail.Session.getTransport(Session.java:641)
at javax.mail.Transport.doSend(Transport.java:149)
at javax.mail.Transport.send(Transport.java:75)
Transport.send(msg)产生相同的结果
我很确定我的类路径是正确的。以下是如何在JAR任务的build.xml中定义它:
<zipfileset src="${sys}/inetlib.jar" includes="**/*.java **/*.class"/>
<zipfileset src="${sys}/gnumail-providers.jar" includes="**/*.java **/*.class"/>
<zipfileset src="${sys}/gnumail.jar" includes="**/*.java **/*.class"/>
其中${sys}是/usr/share/java。我是否必须接受它并使用Oracle JavaMail API?看起来您的程序正在尝试将rfc822设置为用于传输层的域地址。这是有效地址吗?我建议您在代码中搜索此引用,因为问题无疑就在这一领域。我遇到了与您相同的问题,它碰巧是由jar
geronimo-javamail\u 1.4\u规范
造成的。一个简单的解决方案是将其从依赖项中排除。对于Maven,假设它是来自CXF的依赖项:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-core</artifactId>
<version>2.7.5</version>
<exclusions>
<exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-javamail_1.4_spec</artifactId>
</exclusion>
</exclusions>
</dependency>
org.apache.cxf