Javamail работает на Windows, а не на Linux - PullRequest
2 голосов
/ 08 сентября 2011

У меня действительно неприятная проблема с Javamail.

Итак, простая незашифрованная электронная почта без вложений работает как в Linux, так и в Windows.

Когда я пытаюсь отправить вложение вместе с ним или отправить электронное письмо с использованием шифрования TLS, javamail вылетает только в Linux, но не в Windows.

Исключение выдается в Transport.send (msg), это не то, что я написал.

Это полная трассировка стека.

java.lang.NullPointerException
        at org.jpackage.mail.inet.smtp.SMTPConnection.getResponse(SMTPConnection.java:814)
        at org.jpackage.mail.inet.smtp.SMTPConnection.getAllResponses(SMTPConnection.java:841)
        at org.jpackage.mail.inet.smtp.SMTPConnection.quit(SMTPConnection.java:537)
        at gnu.mail.providers.smtp.SMTPTransport.close(SMTPTransport.java:549)
        at javax.mail.Transport.doSend(Transport.java:205)
        at javax.mail.Transport.send(Transport.java:75)

Любая возможная причина для этого? Я просто очень расстраиваюсь из-за сбоя приложения в Linux.

Ответы [ 2 ]

3 голосов
/ 08 сентября 2011

Я скачал и изучил дистрибутив javamail 1.4.4 из Oracle.Нигде во включенных jar-файлах нет ЛЮБЫХ org.jpackage.* или gnu.mail.* пакетов, поэтому вы должны получать их откуда-то еще.

Я предлагаю вам очистить свой путь к классам и устранить ложные пакеты, и попробовать еще раз.

0 голосов
/ 22 февраля 2019

У меня возникла похожая проблема с точно таким же исключением. Я запустил один и тот же код в одной и той же ОС (Windows), но в двух разных контекстах (приглашение DOS и сервер приложений JOnAS), и оба не дали одинакового результата: Письмо было успешно отправлено в командной строке DOS, но не удалось в JOnAS.

Я активировал режим отладки для почтового сеанса и сравнил трассировки SMTP. Они были более или менее одинаковыми, за исключением значений имени пользователя и пароля base64, отправленных для проверки подлинности: я заметил, что в DOS (рабочей) версии преобразованный в base64 пароль имел заполнение (например, пароль «test» был преобразован в «dGVzdA =» = "), но в версии JOnAS (не работает) преобразованный в base64 пароль не имеет заполнения (пароль" test "был преобразован в" dGVzdA "). Это сделало аутентификацию неудачной.

Неправильная кодировка base64 была вызвана библиотеками gnu-mail.jar и / или gnu-providers.jar, присутствующими в библиотеках JOnAS по умолчанию и загруженными вместо jar-файла, встроенного в мою WAR.

Я исправил проблему, удалив эти jar-файлы из папки libs JOnAS по умолчанию. После перезапуска JOnAS письмо было успешно отправлено.

...