Существует расширение IMAP для Быстрые изменения флага Ресинхронизация ( RFC-4551 ). С этим расширением можно искать все сообщения, которые были изменены с момента последней синхронизации (на основе некоторой метки времени). Однако это расширение широко не поддерживается, в частности не сервером IMAP gmail:
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE
Существует информационный RFC, который описывает, как клиенты IMAP должны выполнять синхронизацию ( RFC-4549 , раздел 4.3). В тексте рекомендуется ввести следующие две команды:
tag1 UID FETCH <lastseenuid+1>:* <descriptors>
tag2 UID FETCH 1:<lastseenuid> FLAGS
Первая команда используется для получения необходимой информации для всех неизвестных писем (не зная, сколько существует писем). Вторая команда используется для синхронизации флагов для уже увиденных писем.
Этот метод широко используется. Поэтому многие IMAP-серверы содержат оптимизацию для быстрого предоставления этой информации. Обычно пропускная способность сети является ограничивающим фактором.
Если вас интересует только флаг UNSEEN, UID SEARCH - это, вероятно, лучшее, что вы можете сделать.