POP3Store не проходит проверку подлинности, только в Tomcat7 (отлично работает в модульных тестах) - PullRequest
0 голосов
/ 08 февраля 2012

Это код, который отлично работает в модульном тесте (подключается к 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;

И у меня есть эти зависимости Maven в WEB-INF/lib: javax.mail:mail:1.4.4 и com.sun.mail:pop3:1.4.4.

Ответы [ 2 ]

1 голос
/ 08 февраля 2012

Это не ошибка аутентификации, не соединение.В FAQ по JavaMail есть советы по устранению проблем с подключением .Также обратите внимание:

  • вам не нужно прикасаться к файлу javamail.providers
  • поставщик POP3 включен в артефакт javax.mail: mail, поэтому вам не нужен отдельныйзависимость для него
  • вам не нужно устанавливать mail.pop3.port, так как это порт SSL по умолчанию
  • , вы должны использовать Session.getInstance вместо Session.getDefaultInstance
0 голосов
/ 08 февраля 2012

Вот как это работает:

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.

...