使用Integration Mail启动时从收件箱接收邮件



正如标题中所说,我正在寻找一种在启动时使用Integration Mail接收邮件的方法。由于我工作的系统的限制,获取邮件的唯一方法是通过收件箱,我最好只使用集成邮件。我知道使用Javax.Mail是可能的,但在程序启动时,它有很多行用于读取旧邮件。我厌倦了用SearchTermStrategy来查找已经看到的邮件,但这最终会导致阅读旧邮件的循环。有人知道使用集成邮件的方法吗?

我得到了一个不断监听邮件的集成流,我尝试做一个读取所有读取的邮件的程序,这样我就可以跟踪它们,唯一的问题是,它通过SEEN标志检查旧邮件,并且它无法区分已经读取过的邮件,所以它一直在读取相同的邮件。

我也试过ImapMailReceiver(url).setSearchTermStrategy(searchTermStrategy())有了获取不可见邮件的策略,通过尝试调试器,我看到ImapMailReceiver中可能有消息,但我不知道如何访问它们,也不知道是否可以访问它们。这就是我迄今为止所尝试的。

请参阅MailReceivingMessageSource和类似OnlyOnceTrigger的内容,使Inbound Channel Adapter在启动时只工作一次。只执行了一次之后,它就不会再查看源代码了:

public class OnlyOnceTrigger implements Trigger {
private final AtomicBoolean hasRun = new AtomicBoolean();
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
return this.hasRun.getAndSet(true) ? null : new Date();
}

}

我认为ImapIdleChannelAdapter不是这类任务的好选择。

相关内容

最新更新