spring 集成和接收日期问题

spring integation and received date issue

我正在使用最新的 spring 集成 (4.1.5) javax.mail (1.4.7) 库,但看起来这个问题从一开始就存在。

我正在尝试通过 IMAP 协议从邮件服务器获取接收日期,但 SI 始终 returns 为空。这是因为 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 实例,而是让我获取具有方法 getReceivedDate 存根的 MimeMessage:

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

我看到 header 不包含空元素 Received 所以我看到的唯一选择是手动解析此 header。

这是SI的正确行为吗?错误或功能? 以及如何避免手动解析接收日期 header?

接收日期可作为 internaldate 获取项。

Parsing Received 很无聊,这可能是 Spring 开发人员尚未完成它的原因,也是您讨厌这样做的原因。看看 internaldate 是否可以。

我一直在看Sun代码;它使用 INTERNALDATE 获取项目来填充 receivedDate 属性...

javamail 1.5.2 中的第 1194 行...

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

但是,Spring 没有暴露这个;我创建了一个 JIRA issue.