Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

NPE в теле почтового сообщения. Java получение сообщений mail.ru

#java #javamail


При получении почтового сообщения с Mail.ru message.getContent() или message.isMimeType("text/plain")
вызывает возникновение NPE, хотя тема и отправитель читаются корректно. С Яндекса все
хорошо, с gmail тоже.
Сообщение отправляется с браузера (с Gmail), а не программно.
Сталкивался ли кто-то с таким? Код стандартный:

private Session session(String protocol, String host, Integer port) {
    final Properties properties = new Properties();
    properties.put("mail.store.protocol", protocol);
    properties.put(String.format("mail.%s.host", protocol), host);
    properties.put(String.format("mail.%s.port", protocol), String.valueOf(port));
    properties.setProperty(String.format("mail.%s.socketFactory.class", protocol),
"javax.net.ssl.SSLSocketFactory");
    properties.setProperty(String.format("mail.%s.socketFactory.fallback", protocol),
"false");
    properties.setProperty(String.format("mail.%s.socketFactory.port", protocol),
String.valueOf(port));
    properties.setProperty("mail.mime.decodetext.strict", "false");

    return Session.getInstance(properties);
}
public synchronized List receiveMessages(String protocol, String host, Integer
port, String username, String password) throws MessagingException {
    final Session session = session(protocol, host, port);

    store = session.getStore(protocol);
    store.connect(host, username, password);

    inbox = store.getFolder("INBOX");
    inbox.open(Folder.READ_WRITE);
    final Message[] messages = inbox.search(new FlagTerm(new Flags(Flags.Flag.SEEN),
false));

    return Lists.newArrayList(messages);
}


Stack Trace:

Caused by: java.lang.NullPointerException: null
at javax.mail.internet.MimeUtility.quote(MimeUtility.java:975) ~[mail-1.4.7.jar:1.4.7]
at javax.mail.internet.ParameterList.quote(ParameterList.java:672) ~[mail-1.4.7.jar:1.4.7]
at javax.mail.internet.ParameterList.access$200(ParameterList.java:76) ~[mail-1.4.7.jar:1.4.7]
at javax.mail.internet.ParameterList$ToStringBuffer.addNV(ParameterList.java:640)
~[mail-1.4.7.jar:1.4.7]
at javax.mail.internet.ParameterList.toString(ParameterList.java:621) ~[mail-1.4.7.jar:1.4.7]
at javax.mail.internet.ContentType.toString(ContentType.java:221) ~[mail-1.4.7.jar:1.4.7]
at com.sun.mail.imap.IMAPMessage.getDataHandler(IMAPMessage.java:644) ~[mail-1.4.7.jar:1.4.7]
at javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1420) ~[mail-1.4.7.jar:1.4.7]
at com.brooma.legalsm.task.manager.util.MailParser.plainText(MailParser.java:44)
~[legalsm-task-manager-1.0.jar:na]
at com.brooma.legalsm.task.manager.util.MailParser.(MailParser.java:30) ~[legalsm-task-manager-1.0.jar:na]
at com.brooma.legalsm.task.manager.util.MailParser.create(MailParser.java:96) ~[legalsm-task-manager-1.0.jar:na]
at com.brooma.legalsm.task.manager.job.IssueFromEmailJob.processEmail(IssueFromEmailJob.java:83)
~[legalsm-task-manager-1.0.jar:na]
at com.brooma.legalsm.task.manager.job.IssueFromEmailJob.lambda$execute$0(IssueFromEmailJob.java:69)
~[legalsm-task-manager-1.0.jar:na]
at java.util.ArrayList.forEach(ArrayList.java:1249) ~[na:1.8.0_65]
at com.brooma.legalsm.task.manager.job.IssueFromEmailJob.execute(IssueFromEmailJob.java:69)
~[legalsm-task-manager-1.0.jar:na]
... 2 common frames omitted

    


Ответы

Ответ 1



Это баг: https://kenai.com/bugzilla/show_bug.cgi?id=5978 Для решения необходимо использовать версию 1.5.5 и следующую зависимость: javax.mail javax.mail-api ${javax.mail.version}

Комментариев нет:

Отправить комментарий