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

Java 使用SpringIntegrationIMAP适配器,如何手动获取标记为“未读”的电子邮件?,java,spring,email,imap,spring-integration,Java,Spring,Email,Imap,Spring Integration,我有一段代码,它使用SpringIntegration的IMAP适配器轮询收件箱,读取所有未读且工作正常的传入电子邮件。但如果我打开任何电子邮件,然后在outlook收件箱中将其标记为未读,则轮询器不会获取标记的电子邮件。 我可以使用pop3适配器获取所有电子邮件,但会在文字后删除它们,但我希望将电子邮件保留在收件箱中,我希望轮询器获取所有未查看的电子邮件 有什么处理这个问题的建议吗?我一直在搜索和阅读有关电子邮件适配器的文章,但没有发现任何有用的东西 提前感谢。看起来您需要自定义“搜索词策略”

我有一段代码,它使用SpringIntegration的IMAP适配器轮询收件箱,读取所有未读且工作正常的传入电子邮件。但如果我打开任何电子邮件,然后在outlook收件箱中将其标记为未读,则轮询器不会获取标记的电子邮件。 我可以使用pop3适配器获取所有电子邮件,但会在文字后删除它们,但我希望将电子邮件保留在收件箱中,我希望轮询器获取所有未查看的电子邮件

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


提前感谢。

看起来您需要自定义“搜索词策略”。来自Spring集成SI文档:

默认情况下,ImapMailReceiver将基于默认搜索词搜索邮件,默认搜索词是所有最近的邮件(如果受支持)、未回复的邮件、未删除的邮件、未被查看的邮件以及未被此邮件接收者处理的邮件(通过使用自定义用户标志启用),或者如果不受支持,则不进行标记。自版本2.2以来,ImapMailReceiver使用的SearchTerm可通过SearchTermStrategy进行完全配置,您可以通过SearchTerm strategy属性注入SearchTerm strategy。SearchTermStrategy是一个简单的策略界面,具有一个方法,允许您创建将由ImapMailReceiver使用的SearchTerm实例

下面是SI论坛的一篇帖子,其中有funtastic Oleg的解释:

在这里你可以找到SI:这是一个决定你应该如何实施自己战略的地方。我想,你的情况是:

此电子邮件服务器不支持最近的标志,但它支持用户标志,这些标志将用于防止在获取电子邮件期间重复


将SI mail logging level切换到DEBUG并查看一下,哪个标志支持您的电子邮件服务器。

非常感谢Artem,您的帖子和论坛条目非常有用。现在我明白是什么原因导致它无法获取电子邮件以及如何修复它。有没有机会接受答案:?@ArtemBilan您提供的链接没有帖子。这里有一篇来自SI论坛的帖子,其中有funtastic Oleg的解释:服务器不支持最新或用户标志。你能检查一下下面的问题吗?我认为这是相关的