我正在使用最新的spring集成(4.1.5)javax.mail(1.4.7)库,但看起来这个问题从一开始就坐在那里。
我正在尝试通过IMAP协议从邮件服务器获取日期,但SI始终返回null。这是因为https://github.com/spring-projects/spring-integration/blob/4.1.x/spring-integration-mail/src/main/java/org/springframework/integration/mail/AbstractMailReceiver.java
中的第301行MimeMessage mimeMessage = new IntegrationMimeMessage((MimeMessage) filteredMessages[i]);
所以不要让我得到IMAPMessage实例,而是让我得到MimeMessage,它有方法getReceivedDate的存根:
public Date getReceivedDate() throws MessagingException {
return null;
}
我看到标题包含非null元素已接收,因此我看到的唯一选项是手动解析此标题。
SI的行为是否正确?错误或功能? 以及如何避免手动解析收到的日期标题?
答案 0 :(得分:2)
收到的日期可用作internaldate
获取项目。
Parsing Received是一个非常大的问题,这可能是Spring开发者尚未完成的原因以及为什么你会讨厌这样做。看看internaldate
是否会这样做。
答案 1 :(得分:1)
我一直在看Sun代码;它使用INTERNALDATE
获取项来填充receivedDate
属性...
javamail 1.5.2中的第1194行...
else if (item instanceof INTERNALDATE)
receivedDate = ((INTERNALDATE)item).getDate();
然而,Spring并未公开这一点;我创建了一个JIRA issue。