PHP imap_open适用于7.0.6但不适用于5.4.16
作者:互联网
所以,我有一个通用/应用程序/系统帐户(术语各不相同),可以访问多个邮箱.我使用的用户名格式为< domain> /< username> /< mailbox>这是唯一“与众不同”的事情.以下行适用于PHP 7.0.6(我的笔记本电脑),但不适用于5.4.16(开发服务器):
$mbox = imap_open("<host>:993/ssl/novalidate-cert",
"<domain>/<username>/<mailbox>", <pass>,
NULL, array('DISABLE_AUTHENTICATOR' => 'GSSAPI'));
我得到的错误是:
PHP Notice: Unknown: Can not authenticate to IMAP server: AUTHENTICATE failed. (errflg=2) in Unknown on line 0
我尝试过的:
>邮箱的原始帐户(< domain> /< user>格式的用户名)有效
>在$mailbox和OP_DEBUG标志中使用/ debug – 其中没有任何有用的东西
>使用python调试消息到服务器.这将验证用户名是否以三段字符串形式发送,并且也有效
>删除第3段(邮箱)以后我可以选择它 – 导致两种情况/版本中的身份验证失败
问题:
>这是一个PHP错误吗?
>有没有其他方法可以做到这一点? (我无法更改PHP版本)
>我能以某种方式启用消息记录吗? (没有root所以没有tcpdump选项)
解决方法:
在我看来,你可以尝试做这样的事情:
$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上,我几乎可以肯定这就是问题所在.
标签:php,imap,exchange-server,imap-open 来源: https://codeday.me/bug/20190711/1430560.html