Альтернатива для команды поиска IMAP - PullRequest
1 голос
/ 22 марта 2011

Мне нужна альтернатива для команды поиска IMAP " Поиск 1: * невидимый не удален ", так как почтовый сервер запрещает команду поиска. Я пытался использовать " A status (unseen) ", но он всегда возвращает ноль, хотя есть непрочитанное сообщение. Есть ли альтернатива для команды? Заранее спасибо.

1 Ответ

2 голосов
/ 22 марта 2011

Ваша проблема в том, что сервер IMAP вообще не поддерживает SEARCH или ему не нравится ваша конкретная команда SEARCH? Если это последнее, мы можем упростить:

A SEARCH UNSEEN UNDELETED

(поскольку 1:* неявно). Еще проще - на тот случай, если серверу вообще не нравятся и SEARCH термины вместе - было бы:

A SEARCH UNSEEN
B SEARCH DELETED

и логически делать AND в вашем коде.

Грубый способ сделать это:

C UID FETCH 1:* FLAGS

, а затем выбирает все те, у которых нет ни \Seen, ни \Deleted. (Я предлагаю UID FETCH, потому что аналогичная команда FETCH вернет BAD в пустой папке.)

Кроме того, вы не должны вызывать команду STATUS для выбранной в данный момент папки :

Примечание. Команда STATUS предназначена для доступа к состояние почтовых ящиков, отличных от текущего выбранного почтовый ящик. Поскольку команда STATUS может вызвать почтовый ящик должен быть открыт внутри, и потому что это информация доступна другим способом по выбранному почтовый ящик, команда STATUS НЕ ДОЛЖНА использоваться на текущий выбранный почтовый ящик.

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