2016-01-08 6 views
0

Я использую Apache Camel для мониторинга входящих сообщений электронной почты. Я пытался выяснить, как возвращаются только новые электронные письма с момента предыдущего опроса. Как-то этот процесс будет возвращать только электронные письма, которые были получены между предыдущим опросом.Как IMAP знает, какие письма получать

Пример: Время опроса установлено равным 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> 
+0

Он может отслеживать, какие UID это видели. Или даже самый высокий. Все новые сообщения будут иметь более высокий UID, чем любое ранее обработанное сообщение. – Max

ответ

0

Пожалуйста, ознакомьтесь с опцией «заглянуть» в компонент imap верблюда. Обычно верблюд, когда получает новые письма через imap «заглядывает» в каждое обработанное сообщение. В этом случае, если сообщение успешно обработано, оно отмечено как видимое, но если во время обработки будет некоторая ошибка, сообщение останется невидимым. На вашем маршруте вы обрабатываете только невидимые сообщения.

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

Информация о опции "прятки" из документации:

Потребитель только. Отметьте javax.mail.Message как peeked перед обработкой почтового сообщения. Это относится только к типам сообщений IMAPMessage. Используя peek, почта не будет отмечена как SEEN на почтовом сервере, что позволяет нам откатить почтовое сообщение, если в Camel есть обработка ошибок.

Смежные вопросы