PHP - Office365 与 imap_open 连接

问题描述 投票:0回答:1

感谢您的预期帮助。

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

我已经尝试了在堆栈溢出上找到的所有建议,我当前的代码如下。我似乎无法使用 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}第 14 行 imap.connect2.php 中的收件箱 array(2) { [0]=> string (13)“登录失败。” [1]=> string(23) "登录失败次数过多" }

因此,如果我将代码更改为更简单的代码而不附加 DISABLE_AUTHENTICATOR ,我仍然会收到错误。请参阅下面的代码和错误

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

我验证失败

警告:imap_open():无法打开流{outlook.office365.com:993/imap/ssl/novalidate-cert}收件箱/home/tnslive/domains/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 服务器进行身份验证:身份验证失败。” }

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

php office365 imap-open
1个回答
0
投票

此代码自 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 方法(请参阅此处)<-- I think it's the thing you want.
© www.soinside.com 2019 - 2024. All rights reserved.