У меня есть приложение, которое используется для архивирования электронной почты с помощью imap. Также в этом приложении много учетных записей IMAP, которые необходимо архивировать.Как скачать только новые письма от imap?
В этот момент время от времени приложение подключается к учетным записям imap и загружает только новые письма. Моя проблема в том, что каждый раз, когда он подключается к учетной записи imap, он проверяет все электронные письма из всех папок и загружает только электронные письма, которые еще не загружены (я сохраняю Message-ID для всех электронных писем и загружаю только электронные письма с идентификатором сообщения, не сохраняется). Так что я хочу знать, есть ли альтернатива для этого, потому что для проверки всех писем требуется некоторое время (для 10-20K это занимает 2-5 минут).
Я использую API JavaMail для подключения к учетным записям imap.
Это не решение для меня, потому что UID меняются со временем, поэтому я использую Message-ID для отслеживания загруженных писем. – telebog
как я понимаю getUID (Message message) -method, вы можете получить фактический MessageUID для данного сообщения с сервера. Таким образом, можно было бы получить фактический UID последнего сообщения, которое у вас есть, а затем использовать методы getUIDNext() и getMessagesByUID(), чтобы найти последнее сообщение и загрузить заданный диапазон. – Erik
UID сообщения будет изменяться, когда сообщение будет перемещено из одной папки (или «почтового ящика» в терминологии IMAP) в другую. [«Уникальные идентификаторы назначаются строго по возрастанию в почтовом ящике, так как каждое сообщение добавляется в почтовый ящик, ему назначается более высокий UID, чем сообщения, которые были добавлены ранее».] (Http: //tools.ietf .org/html/rfc3501 # section-2.3.1.1), похоже, что телешоп хочет загружать каждое сообщение ровно один раз, независимо от того, в какой папке он находится. – dkarp