首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP imap_open在7.0.6上工作,但5.4.16不起作用。

问PHP imap_open在7.0.6上工作,但5.4.16不起作用。
EN

Stack Overflow用户
提问于 2016-06-24 16:36:13
回答 1查看 1.6K关注 0票数 4

因此,我有一个通用/应用程序/系统帐户(术语不同),它可以访问多个邮箱。我使用的用户名是<domain>/<username>/<mailbox>格式的,这是唯一的“与众不同”的东西。以下一行适用于PHP7.0.6(我的笔记本电脑),但不适用于5.4.16 (dev服务器):

代码语言:javascript
复制
$mbox = imap_open("<host>:993/ssl/novalidate-cert", 
               "<domain>/<username>/<mailbox>", <pass>,
               NULL, array('DISABLE_AUTHENTICATOR' => 'GSSAPI'));

我得到的错误是:

PHP注意:未知:无法对IMAP服务器进行身份验证:身份验证失败。(errflg=2)在第0行中未知

我试过的是:

  • 邮箱的原始帐户(用户名以<domain>/<user>格式)工作
  • 在/debug中使用$mailbox和OP_DEBUG标志--其中non做了任何有用的事情。
  • 使用python调试消息到服务器。这将验证用户名是否以三段字符串的形式发送,并且工作正常。
  • 删除第三段(邮箱),认为我可以在以后选择它-导致身份验证失败在两个情况/版本。

问题:

  1. 这是PHP错误吗?
  2. 还有别的办法吗?(我不能更改PHP版本)
  3. 我可以以某种方式启用消息记录吗?(没有根,所以没有tcpdump选项)
EN

回答 1

Stack Overflow用户

发布于 2016-06-28 10:38:23

在我看来,你可以尝试这样做:

代码语言:javascript
复制
$mbox = imap_open("<host>:993/ssl/novalidate-cert", 
               "<domain>/<username>/<mailbox>", <pass>,
               NULL, array('DISABLE_AUTHENTICATOR' => 'GSSAPI')) or 
                   die(var_dump(imap_errors()));

你应该能看到更多的错误。接下来,您可以尝试的是切换到平原,而不是GSSAPI,或者尝试将n_retries设置为1,最后考虑,添加有关IMAP的标志。

代码语言:javascript
复制
$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上运行的,那么我几乎可以肯定这就是问题所在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38018235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档