【问题标题】:Fetching Gmail Using PHP: imap_open(): Couldn't open stream使用 PHP 获取 Gmail:imap_open():无法打开流
【发布时间】:2020-01-27 14:40:52
【问题描述】:

前言:

我已经阅读了几个 StackOverflow 线程,并且几乎尝试了所有这些线程。

  1. 我正在尝试通过 PHP 设置 IMAP 以使用 Clivern/Imap 获取一些电子邮件
  2. 我也尝试过 David Walsh 的帖子:Retrieve Your Gmail Emails Using PHP and IMAP

我做过的事情:

  1. 同时使用 GSuite 和 Gmail 帐户进行了尝试;两者都启用了 IMAP。
  2. 允许'Less Secure Apps' to connect(即使我在有效的 SSL 下运行)。 OpenSSL is installed (OpenSSL 1.0.2o 2018 年 3 月 27 日)
  3. 我已经完成Display Unlock Captcha
  4. 我已尝试在多个本地/托管环境中进行测试

问题:

  1. 当我使用 GSuite 时连接正常;使用 Gmail 时失败(我已多次检查电子邮件/密码并并排比较 IMAP 设置......它们都可以)
  2. 尝试通过 Clivern 库检查 Gmail 时遇到的错误是:Warning --> imap_open(): Couldn't open stream {imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX
  3. 尝试通过 PHP 函数检查 Gmail 时遇到的错误是:Can not authenticate to IMAP server: [AUTHENTICATIONFAILED] Invalid credentials (Failure)

我的代码:

// Using Library
use Clivern\Imap\Core\Connection;
use Clivern\Imap\MailBox;

$imap_email = 'my_email@gmail.com';
$imap_password = 'my_password';

$connection = new Connection(
    "imap.gmail.com",
    "993",
    $imap_email,
    $imap_password,
    "/ssl", // I've also tried /ssl/novalidate-cert
    "INBOX"
);

$connection->connect();
$mailbox = new MailBox($connection);
$folders = $mailbox->getFolders();
echo var_dump($folders);
$connection->disconnect();

// Using PHP functions
$hostname = '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX';
$username = $imap_email;
$password = $imap_password;

/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());

我的问题:

还有什么可能导致 Gmail 无法通过身份验证?

...我特别困惑为什么 GSuite 可以工作而 Gmail 不能。

【问题讨论】:

    标签: php gmail-imap


    【解决方案1】:

    我们有类似的问题

    与密码有效期有关。

    如果您尝试以隐身方式登录 - gmail 要求您更改密码? 如果是,您可以在 gmail 和您的代码中更改密码 - 这可能会有所帮助

    【讨论】:

      猜你喜欢
      • 2019-12-03
      • 2012-05-14
      • 2020-07-27
      • 2012-08-04
      • 1970-01-01
      • 2016-05-06
      • 2018-01-13
      • 2018-11-21
      相关资源
      最近更新 更多