Итак, у меня есть общая / прикладная / системная учетная запись (терминология варьируется), которая имеет доступ к нескольким почтовым ящикам. Я использую имя пользователя в формате <domain>/<username>/<mailbox>
и это единственная «необычная» вещь. Следующая строка работает на PHP 7.0.6 (мой ноутбук), но не на 5.4.16 (сервер dev):
$mbox = imap_open("<host>:993/ssl/novalidate-cert",
"<domain>/<username>/<mailbox>", <pass>,
NULL, array('DISABLE_AUTHENTICATOR' => 'GSSAPI'));
Я получаю ошибку:
Примечание PHP: Неизвестно: Не удается пройти проверку подлинности на сервере IMAP: Ошибка AUTHENTICATE. (errflg = 2) в Неизвестно в строке 0
Что я пробовал:
<domain>/<user>
формат) который работает/debug
в $mailbox
а также OP_DEBUG
флаг — ни один из которых не сделал ничего полезногоВопросы:
На мой взгляд, вы можете попробовать сделать что-то вроде этого:
$mbox = imap_open("<host>:993/ssl/novalidate-cert",
"<domain>/<username>/<mailbox>", <pass>,
NULL, array('DISABLE_AUTHENTICATOR' => 'GSSAPI')) or
die(var_dump(imap_errors()));
Вы должны увидеть больше ошибок. Далее вы можете переключиться на PLAIN вместо GSSAPI и, возможно, попытаться установить для n_retries значение 1 и, наконец, подумать, добавить флаг об IMAP.
$mbox = imap_open("<host>:993/imap/ssl/novalidate-cert",
"<domain>/<username>/<mailbox>", <pass>,
NULL, 1, array('DISABLE_AUTHENTICATOR' => 'PLAIN')) or
die(var_dump(imap_errors()));
Я думаю, что есть проблема с Exchange, который не разрешает протоколы аутентификации, которые он не поддерживает. Если вы запускаете его на win, и он работает, а ваша среда разработки работает на Linux, я почти уверен, что это та проблема.
Других решений пока нет …