使用PHP提取Gmail:imap_open():无法打开流

时间:2019-09-27 09:28:40

标签: php gmail-imap

前言:

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

  1. 我正在尝试通过PHP设置IMAP,以使用Clivern/Imap
  2. 来获取一些电子邮件
  3. 我也尝试过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不能工作。

1 个答案:

答案 0 :(得分:0)

我们遇到了类似的问题

与密码过期日期有关。

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