我只是想使用IMAP从Gmail中读取未读电子邮件。因此,当我运行我的应用程序时,它能够读取所有未读的电子邮件。即使在运行应用程序之前,INBOX中已经提供了这些电子邮件。这是一个问题,比方说我有120封电子邮件,我的应用程序开始读取它们,并且它已经读取了其中一封,并且计数减少到119,然后,如果假设我的电子邮件收到另一封电子邮件,那么我的服务将开始处理该电子邮件,其余119封电子邮件处于未读状态,我的应用程序未对其进行处理
我尝试使用Spring提供的DefaultSearchTermStrategy
EmailReadTaskRunner<SampleMailMessage> emailTaskRunner = new
EmailReadTaskRunner<SampleMailMessage>();
for (MailConfig mailConfig : yamlConfig.getMailConfig()) {
if (mailConfig.isImapEnabled()) {
Properties properties = this.getImapProperties();
properties.put("mail.debug",
String.valueOf(mailConfig.isDebugEnabled()));
ImapMailReceiver receiver = new
ImapMailReceiver(mailConfig.getImageStoreUri() +
"/INBOX");
receiver.setShouldMarkMessagesAsRead(true);
receiver.setShouldDeleteMessages(false);
receiver.setJavaMailProperties(properties);
receiver.setJavaMailAuthenticator(
new MailAuthenticator(mailConfig.getUser(),
mailConfig.getPassword()));
StandardIntegrationFlow flow = IntegrationFlows
.from(Mail.imapIdleAdapter(receiver).shouldReconnectAutomatically(true)).handle(message -> {
emailTaskRunner.read(emailReadTask, message, mailConfig);
}).get();
this.getFlowContext().registration(flow).register();
}
}
我想阅读所有未读的电子邮件,可以是最新的也可以是旧的。 我正在使用SpringIntegration 5.0.3版本,并且还使用了代码中提到的IMAP协议。我也想知道为什么它表现出这种行为。在新邮件进入Gmail之前,它能够读取所有邮件,每当新邮件进入Gmail时,它便开始阅读新电子邮件并忽略以前的未读电子邮件