2015-06-16 4 views
3

Я использую последние библиотеки интеграции с версией (4.1.5) javax.mail (1.4.7), но похоже, что эта проблема сидит там с самого начала.весенняя интеграция и дата выдачи

Я пытаюсь получить полученную дату с почтового сервера по протоколу IMAP, но SI всегда возвращает null. Это происходит из-за ряда 301 https://github.com/spring-projects/spring-integration/blob/4.1.x/spring-integration-mail/src/main/java/org/springframework/integration/mail/AbstractMailReceiver.java

MimeMessage mimeMessage = new IntegrationMimeMessage((MimeMessage) filteredMessages[i]); 

Так вместо того, чтобы позволить мне получить IMAPMessage экземпляр это делает меня, чтобы получить MimeMessage, который имеет заглушку для метода getReceivedDate:

public Date getReceivedDate() throws MessagingException { 
return null;  
} 

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

Правильное ли поведение SI? Ошибка или функция? И как избежать ручного разбора полученного заголовка даты?

+0

Сумасшедший вопрос, но вы пытались сбрасывать MimeMessage на IMAPMessage? –

+0

уверен. (com.sun.mail.imap.IMAPMessage) in.getPayload() - не может отличить 'org.springframework.integration.mail.AbstractMailReceiver $ IntegrationMimeMessage' to 'com.sun.mail.imap.IMAPMessage' –

ответ

1

Я искал код Солнца; он использует INTERNALDATE выборку элемента для заполнения receivedDate недвижимости ...

Line 1194 в JavaMail 1.5.2 ...

else if (item instanceof INTERNALDATE) 
    receivedDate = ((INTERNALDATE)item).getDate(); 

Однако весна не выставляет это; Я создал JIRA issue.

2

Полученная дата доступна как элемент извлечения internaldate.

Parsing Received - это немало проблем, поэтому, вероятно, разработчики Spring еще не сделали этого и почему вы этого не ненавидите. Посмотрите, будет ли делать internaldate.

+0

К сожалению, Spring не " t выставляем дату INTERNAL либо [JIRA] (https://jira.spring.io/browse/INT-3744). –

+0

Вы можете получить его из объекта IMAPMessage, который у вас уже есть. https://javamail.java.net/nonav/docs/api/com/sun/mail/imap/IMAPMessage.html#getReceivedDate() – arnt

+0

Или, подождите. Возможно, я неправильно понял, и у вас нет этого объекта IMAPMessage. Сожалею. – arnt