【问题标题】:PHP - Office365 connecting with imap_openPHP - Office365 与 imap_open 连接
【发布时间】:2022-07-22 05:20:22
【问题描述】:

感谢预期的帮助。

有谁知道使用 imap_open 连接到 office365 的 php 的当前状态?

我已经尝试了关于堆栈溢出的所有建议,我当前的代码如下。我似乎无法使用 imap_open 连接到 office365,直接连接失败或以下其他错误。

有人在 2022 年有这个工作吗

我已经尝试了下面的代码,导致下面的错误。我还浏览了 office365 管理面板并将我的服务器 IP 列入白名单,我已启用 SMTP 身份验证并在我要连接的帐户上启用 IMAP。

$username = 'xxxxx';
$password = 'xxxxx';

$host = "{outlook.office365.com:993/imap/ssl/novalidate-cert}Inbox";
$mbox=imap_open($host,$username,$password, NULL, 1, 
                           array('DISABLE_AUTHENTICATOR' => 'PLAIN')) or 
                   die(var_dump(imap_errors()));

这给了我太多登录失败的当前错误,但是这个错误会根据我在 imap_open 中尝试的设置而改变,所以我不确定这是一个真正的错误代码

警告:imap_open():无法打开流 {outlook.office365.com:993/imap/ssl/novalidate-cert}inbox in imap.connect2.php on line 14 array(2) { [0]= > string(13) "登录失败。" [1]=> string(23) "登录失败次数过多" }

因此,如果我将代码更改为更简单的代码,而无需额外添加 DISABLE_AUTHENTICATOR,我仍然会收到错误消息。请参阅下面的代码和错误

$mbox=imap_open($host,$username,$password) or 
                   die(var_dump(imap_errors()));

我的身份验证失败

警告:imap_open():无法打开 /home/tnslive/domains/ 中的流 {outlook.office365.com:993/imap/ssl/novalidate-cert}收件箱manage.tnslive.com/public_html/webmail/imap.connect2.php 上线 13
array(3) { [0]=> string(56) "在 AUTHENTICATE 失败后重试 PLAIN 身份验证。" [1]=> string(56) "在 AUTHENTICATE 失败后重试 PLAIN 身份验证。" [2]=> string(57) "无法对 IMAP 服务器进行身份验证:AUTHENTICATE 失败。" }

我已经尝试了一个星期,并尝试了其他用于 office365 的 imap_open 函数中使用的域的轻微替代方案....我在这里损失惨重,我已经为很多人购买了 office365,现在我们不能通过我们的 php 软件将我们的应用程序与主要电子邮件一起使用。噩梦。

【问题讨论】:

  • 服务器是否使用self-signed 证书?
  • 您好,没有服务器使用letsencrypt证书
  • 我只是想知道 uri 的 novalidate-cert 部分 - 通常用于 self-signed 证书
  • 这个问题你解决了吗?我也面临这个问题

标签: php office365 imap-open


【解决方案1】:

此代码自 2018 年以来仍然有效(在生产服务器上)

$host = $mailboxes[$mailbox]['host'];
$enc = '/imap/ssl/novalidate-cert';
$this->mailbox = "{" . $host . $enc . "}";
imap_open($this->mailbox, $config['username'], $config['password'], 1, 0, array('DISABLE_AUTHENTICATOR' => 'GSSAPI'));

虽然我应该再提两件事。

  1. outlook.office365.com 有时会解析为 IPv6,但 php 不适用于 IPv6,因此您需要以某种方式手动解析 outlook.office365.com IPv4(我个人有一个带有 IP 的预定义数组,并从每个数组中获取一个随机索引时间)。
  2. 您应该启用 AUTHENTICATE PLAIN 方法(请参阅here

【讨论】:

    猜你喜欢
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    相关资源
    最近更新 更多