使用Spring集成IMAP适配器,如何手动获取标记为“未读”的电子邮件?

我有一段代码,它使用spring集成的IMAP适配器轮询收件箱,以读取所有未读的电子邮件,并且工作正常。 但是,如果我打开任何电子邮件,然后在我的Outlook收件箱中将其标记为“未读”,则轮询器不会获取标记的电子邮件。 我可以使用pop3适配器来获取所有电子邮件,但删除它们后,但我想将电子邮件保存在我的收件箱中,我希望轮询器能够获取所有看不见的电子邮件。

有什么建议来处理这个问题吗? 我一直在搜索和阅读有关电子邮件适配器的文章,但没有找到任何有用

提前致谢。

看起来您需要自定义“搜索 – 期限策略”。 从Spring Integration(SI)文档:

默认情况下,ImapMailReceiver将根据默认的SearchTerm搜索消息,这些消息是最近的所有邮件(如果支持),这些邮件是未收到的,未删除的,未查看且未被此邮件接收方处理的邮件(通过使用自定义USER标志启用,或者如果不支持则不标记为FLAGGED。 从版本2.2开始,ImapMailReceiver使用的SearchTerm可通过SearchTermStrategy完全配置,您可以通过search-term-strategy属性注入。 SearchTermStrategy是一个简单的策略接口,只有一个方法,允许您创建将由ImapMailReceiver使用的SearchTerm实例。

以下是来自SI论坛的post,其中包含了解释Oleg的解释: 服务器不支持最近或用户标志

在这里你可以找到SI DefaultSearchTermStrategy :它是一个确定如何实现自己策略的地方。 我想,你的情况是:

此电子邮件服务器不支持RECENT标志,但它支持USER标志,用于防止在电子邮件提取过程中出现重复。

将SI邮件日志记录级别切换到DEBUG并查看,哪个标志支持您的电子邮件服务器。