此代码在单元测试中完美运行(连接到Gmail):
Properties props = new Properties();
props.put("mail.pop3.ssl.enable", true);
props.put("mail.pop3.host", "pop.gmail.com");
props.put("mail.pop3.port", "995");
javax.mail.Session.getDefaultInstance(props, null)
.getStore("pop3")
.connect("foo@...", "password");
当我在Tomcat7中运行相同的代码时:
...
Caused by: javax.mail.AuthenticationFailedException: failed to connect
at javax.mail.Service.connect(Service.java:332)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:196)
它是什么?
好吧,我已经配置了META-INF/javamail.providers
:
protocol=pop3; type=store; class=com.sun.mail.pop3.POP3Store;
我在WEB-INF/lib
:javax.mail:mail:1.4.4
和com.sun.mail:pop3:1.4.4
中拥有这些Maven依赖项。
答案 0 :(得分:1)
它无法进行身份验证,无法连接。 JavaMail FAQ有tips for debugging connection problems。另请注意:
答案 1 :(得分:0)
这是它的工作原理:
Properties props = new Properties();
props.put("mail.pop3.ssl.enable", true);
javax.mail.Session.getDefaultInstance(props)
.getStore("pop3s")
.connect("pop.gmail.com", 995, "foo@...", "password");
我不知道为什么,但在这种组合中,它既适用于单元测试,也适用于Tomcat7容器。