Мы обнаружили сегодня, что для двух наших клиентов JavaMail не аутентифицируется, поэтому наш продукт не может отправлять электронную почту. Мы отправляем электронные письма через наш собственный сервер в течение многих лет, а также для нескольких других клиентов, и мы думали, что мы используем аутентификацию для всех этих.Почему JavaMail не аутентифицируется?
код протекает следующим образом:
transport = session.getTransport("smtp");
transport.connect(hostName, port, user, password);
В соответствии с документацией here, JavaMail следует использовать проверку подлинности, если мы использовали эту форму метода Connect(). Мы не устанавливаем никаких свойств, но если я правильно читаю эту страницу, нам это не нужно.
Мы используем mail.jar из JBoss 4.2.1.GA.
Что нам нужно делать по-другому?
Обновление: если я использую другой метод на этой странице документации (устанавливая свойство mail.smtp.auth и предоставляя аутентификатор), аутентификация, наконец, работает. Но что мы делаем неправильно с этим методом?
После этого выяснилось, что Java просто не делает то, что говорят документы. «Вызовите метод подключения транспорта явно с аргументами пользователя и пароля» не вызывает аутентификацию. Вы должны «Предоставлять объект Authenticator при создании сеанса почты и предоставлять информацию о имени пользователя и пароле во время обратного вызова аутентификатора». Кажется, сосет быть нами. Я переписал его. Спасибо, вс ... – skiphoppy