【问题标题】:How does IMAP know which emails to fetchIMAP 如何知道要提取哪些电子邮件
【发布时间】:2016-04-13 08:52:08
【问题描述】:

我正在使用 Apache Camel 来监控电子邮件收件箱。我一直试图找出自上次民意调查以来新收到的电子邮件是如何返回的。不知何故,这个过程只会返回上次投票之间收到的电子邮件。

示例:轮询时间设置为 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>

【问题讨论】:

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

标签: apache-camel imap email


【解决方案1】:

请查看camel imap 组件的“peek”选项。通常骆驼通过 imap 获取新电子邮件时会“偷看”每条已处理的消息。在这种情况下,如果消息被成功处理,则将其标记为已看到,但如果在处理过程中出现一些错误,则消息将保持不可见。在您的路线中,您只处理看不见的消息。

http://camel.apache.org/mail.html

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

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

【讨论】:

    猜你喜欢
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    相关资源
    最近更新 更多