imap php 不工作

imap php not working

我正在尝试 运行 imap_open() 在我的服务器上,但它给我这个错误。

Warning: imap_open(): Couldn't open stream {imap.gmail.com:993/imap/ssl}INBOX in /home/bestinsaudi2/public_html/mailbox.php on line 55 Cannot connect to Gmail: Can not authenticate to IMAP server: [ALERT] Please log in via your web browser: https://support.google.com/mail/acco

我在我使用的 gmail 帐户中启用了 imap。我还启用了不太安全的应用程序。我从 david walsh 复制了代码。他的凭据给出了这个错误。

Warning: imap_open(): Couldn't open stream {imap.gmail.com:993/imap/ssl}INBOX in /home/bestinsaudi2/public_html/mailbox.php on line 55 Cannot connect to Gmail: Can not authenticate to IMAP server: [AUTHENTICATIONFAILED] Invalid credentials (Failure)

我正在用我自己的凭据写下我正在使用的代码。

$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'myemail@gmail.com';
$password = 'mypassword';

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

还有一件事我没有使用 wamp 或 xamp 服务器,我使用的是 ipower。在某处我发现 运行 命令像 $ composer require secit-pl/imap-bundle 它令人困惑。如何以及在哪里 运行 这个以及我的代码是否有必要?我还必须为此下载任何库吗?还是应该采取一些额外的步骤?

您可能正在为名为 "Less Secure Apps" 的东西寻找 gmail 设置: https://support.google.com/accounts/answer/6010255?hl=en

这就是它要求您使用浏览器登录的原因。

在您正确设置并启用安全性较低的应用程序后,这应该可以很好地工作,只是用我自己的帐户检查过。

编辑:是否已启用安全应用,您可能需要创建应用密码: https://support.google.com/mail/answer/185833?hl=en 并将您的凭据更改为:

$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'email@gmail.com';
$password = 'app password here, not your gmail password';

EDIT2:应用程序密码功能需要启用两步验证

如果启用了不太安全的应用程序,并且应用程序密码不起作用或不需要,可能是 google 发现您的 imap 使用的 IP 地址可疑并阻止了它。

从浏览器登录该帐户并检查主题为 "Critical security alert" 的电子邮件。电子邮件上的日期应该与 imap 停止工作的时间大致相同。如果您找到这样的电子邮件,它应该清楚地说明登录尝试被阻止,并且有一个大按钮,上面写着 "Check activity"。当您单击该按钮时,它会询问它阻止的登录是否真的来自您。表明它是,您应该能够从该 IP 再次使用 imap 登录。

如果您或其他人已经表明不是他们,可以选择更改您的答案。

当 google 决定这样做时,它只发送一封电子邮件。因此,如果已经过了几天,那封电子邮件可能会被埋在收件箱中。从该 IP 每次阻止登录都不会重新发送。