2010-02-09 3 views
3

Мы обнаружили сегодня, что для двух наших клиентов 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 и предоставляя аутентификатор), аутентификация, наконец, работает. Но что мы делаем неправильно с этим методом?

ответ

1

я, наконец, обнаружил, что я звоню:

transport.send(message, message.getAllRecipients()); 

, который является статической метод, а не:

transport.sendMessage(message, message.getAllRecipients()); 

Я думаю, именно поэтому он не аутентифицировался, поэтому я считаю, что это реальный ответ. Помогло бы, если бы я разместил эту часть кода, но я понятия не имел, что проблема была. Не может для меня жизнь выяснить, почему Transport.send() является статическим методом, но если вы знаете, пожалуйста, tell me.

2

Попробуйте props.put("mail.debug", "true"); для получения возможной информации об отладке, которая даст вам более глубокое понимание.

Кроме того, если это окно для Windows, имеет вид для брандмауэра или антивирусного бега: http://forums.sun.com/thread.jspa?threadID=590866

+1

После этого выяснилось, что Java просто не делает то, что говорят документы. «Вызовите метод подключения транспорта явно с аргументами пользователя и пароля» не вызывает аутентификацию. Вы должны «Предоставлять объект Authenticator при создании сеанса почты и предоставлять информацию о имени пользователя и пароле во время обратного вызова аутентификатора». Кажется, сосет быть нами. Я переписал его. Спасибо, вс ... – skiphoppy

Смежные вопросы