Как получить невидимые / непрочитанные письма в почтовом ящике, кроме техники поиска почты - PullRequest
0 голосов
/ 27 марта 2012

Я работаю над приложением почтового клиента, которое синхронизирует электронную почту для учетной записи GMail, используя библиотеку IMAP c-client.

Как я могу получать самые последние невидимые / непрочитанные электронные письма в почтовом ящике без слепого поиска всех непрочитанных электронных писем?

При поиске почты необходимо извлекать все непрочитанных сообщений электронной почты при каждой синхронизации с клиентом, но это довольно дорогая операция при каждой синхронизации. Есть ли лучший способ сообщить клиенту непрочитанные электронные письма, которые не были синхронизированы при предыдущем взаимодействии с сервером?

Например, Thunderbird может синхронизировать невидимые электронные письма с каким-либо механизмом (возможно, путем слепого поиска всех невидимых электронных писем), поскольку команда IDLE не уведомляет клиент о них.

Существует ли какой-либо механизм, который может сообщать клиенту о непрочитанных электронных письмах, появившихся после последней синхронизации?

1 Ответ

0 голосов
/ 04 апреля 2012

Существует расширение 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 - это, вероятно, лучшее, что вы можете сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...