Ваша проблема в том, что сервер 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 НЕ ДОЛЖНА использоваться на
текущий выбранный почтовый ящик.