Назад | Перейти на главную страницу

Сервер IMAP отвечает ошибкой «ПЛОХО…» на «СПИСОК…» после успешного выполнения аналогичной команды «СПИСОК».

Я получаю BAD... ошибка при запуске LIST команда против сервера IMAP, который я не понимаю и с которым мне нужна помощь. Я запускаю почти идентичную команду непосредственно перед ней, чтобы перечислить корневые почтовые ящики и у меня нет проблем, но когда я начинаю перебирать эти почтовые ящики и пытаюсь составить список их дочерних почтовых ящиков, я получаю сообщение об ошибке. Странно то, что даже если первая строка, возвращаемая сервером IMAP, является BAD... ответ, он по-прежнему выполняет остальную часть запроса, как будто ничего не случилось?!?!

Для начала вам нужно знать namespace детали рассматриваемого сервера ...

NAMESPACE

Array
(
    [0] => * NAMESPACE (("" ".")) NIL NIL
)

Этот сервер использует пустой корневое пространство имен, а точка (.) для почтового ящика разделитель.

Вот команда, которую я использую для корень список...

LIST "" "%" RETURN (SUBSCRIBED CHILDREN SPECIAL-USE STATUS (MESSAGES UNSEEN)) 

За что получаю ожидаемый ответ ...

Array
(
    [0] => * LIST (\Subscribed \HasChildren) "." Archives
    [1] => * STATUS Archives (MESSAGES 0 UNSEEN 0)
    ...
)

Я должен отметить, что все RETURN мета-возможности были созданы из более раннего CAPABILITIES запрос.

Итак, основываясь на результатах, я начинаю перебирать их, чтобы получить дочерние почтовые ящики, с первым из них Archives. Синтаксис, который я использую, почти идентичен синтаксису, описанному в RFC 3501 # 6.3.8 примеры под LIST...

LIST "Archives." "%" RETURN (SUBSCRIBED CHILDREN SPECIAL-USE STATUS (MESSAGES UNSEEN)) 

Я ожидал, что в нем будут перечислены все дочерние почтовые ящики относительно Archives почтовый ящик, что он делает, однако сначала перечисляет BAD... ответ...

Array
(
    [0] => * BAD Error in IMAP command : Unknown command (0.000 + 0.000 secs).
    [1] => * LIST (\Subscribed \HasNoChildren) "." Archives.2017
    [2] => * STATUS Archives.2017 (MESSAGES 0 UNSEEN 0)
    [3] => * LIST (\Subscribed \HasNoChildren) "." Archives.2016
    [4] => * STATUS Archives.2016 (MESSAGES 192 UNSEEN 0)
    [5] => * LIST (\Subscribed \HasNoChildren) "." Archives.2019
    [6] => * STATUS Archives.2019 (MESSAGES 1 UNSEEN 0)
)

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

Мне действительно нужна помощь, спасибо!


РЕДАКТИРОВАТЬ 1: Я получаю ту же необъяснимую ошибку от двух разных серверов IMAP, с которыми я тестирую, и они оба демонстрируют одинаковое поведение ... возвращают правильные записи, но не раньше, чем включают BAD... ошибка в первую очередь. Значит, это должно быть что-то в синтаксисе моего LIST... запросов, но мне кажется, что я использую те же примеры, что и в RFC, поэтому я в растерянности.