Apache camel IMAP如何知道要获取哪些电子邮件

Apache camel IMAP如何知道要获取哪些电子邮件,apache-camel,imap,email,Apache Camel,Imap,Email,我正在使用ApacheCamel监视电子邮件收件箱。我一直在试图找出自上次投票以来,只有新收到的电子邮件才会被退回。不知何故,这个过程只会返回在上一次投票之间收到的电子邮件 例如: 轮询时间设置为60秒。如果我在这个时间范围内向收件箱发送一封电子邮件,一封电子邮件将由路由处理。如果我在接下来的60秒内发送了两封电子邮件,只有两封邮件被路由处理,而不是三封,那么它会忽略上一次投票中处理的第一封电子邮件。我想知道这是怎么发生的 我没有查看邮箱或将任何电子邮件标记为已读 <camel:camel

我正在使用ApacheCamel监视电子邮件收件箱。我一直在试图找出自上次投票以来,只有新收到的电子邮件才会被退回。不知何故,这个过程只会返回在上一次投票之间收到的电子邮件

例如: 轮询时间设置为60秒。如果我在这个时间范围内向收件箱发送一封电子邮件,一封电子邮件将由路由处理。如果我在接下来的60秒内发送了两封电子邮件,只有两封邮件被路由处理,而不是三封,那么它会忽略上一次投票中处理的第一封电子邮件。我想知道这是怎么发生的

我没有查看邮箱或将任何电子邮件标记为已读

<camel:camelContext id="webService">
    <camel:route id="monitor">
        <camel:from uri="imap://pulp.test.uk?username=tester&amp;password=testing&amp;unseen=true&amp;consumer.delay=60000" />
        <camel:process ref="storeProcessor" />
    </camel:route>  
</camel:camelContext>

请查看camel imap组件的“peek”选项。通常,在通过imap“peek”获取新电子邮件时,会对每个处理过的邮件进行驼峰搜索。在这种情况下,若消息被成功处理,那个么它被标记为可见,但若在处理过程中出现一些错误,那个么消息将保持不可见。在你的路线中,你只处理看不见的信息

文档中关于“peek”选项的信息:

仅限消费者。将在处理邮件消息之前将javax.mail.Message标记为Peek。这仅适用于IMAPMessage消息类型。通过使用peek,邮件将不会像邮件服务器上所看到的那样被急切标记,这允许我们在Camel中处理错误时回滚邮件消息


它可以跟踪所看到的UID。甚至是最高的。所有较新消息的UID都将高于之前处理的任何消息。