14

有很多人有类似的问题,但没有人回答他们的问题。我在 PHP 中启用了 IMAP,使用了所有正确的信息。我看不出我哪里错了。

这是我的代码:

$hostname = '{imap.gmail.com:995/imap/ssl/novalidate-cert}'; 
$username = 'emailaddress@gmail.com'; $password = 'password'; 
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());

print_r(imap_errors());

不返回任何错误,除了:

警告:imap_open() [function.imap-open]:无法在线打开 /home/a8066360/public_html/test/imap.php 中的流 {imap.gmail.com:995/imap/ssl/novalidate-cert} 6

无法连接到 Gmail:无法连接到 gmail-imap.l.google.com,995:连接超时

我注意到如果我将单引号更改为 `

出于安全原因,shell_exec() 已被禁用...

请帮忙!!!

4

7 回答 7

14

您需要端口993,即 SSL IMAP端口。

端口 995 是 SSL POP3端口。

于 2012-08-02T13:32:53.690 回答
6

我认为 Gmail 的 IMAP 只能在端口 993 上访问。

$hostname = "{imap.gmail.com:993/imap/ssl/novalidate-cert}";

于 2012-08-02T06:55:06.247 回答
4

我有同样的错误并找到了不同的解决方案。我已将调试信息添加到主机中:

"{imap.gmail.com:993/debug/imap/ssl/novalidate-cert}INBOX"; 

当我阅读php错误日志时,我发现

Unknown: [ALERT] Please log in via your web browser: https://support.google.com/mail/accounts/answer/78754 (Failure) (errflg=1) in Unknown on line 0

打开链接,然后按照说明进行操作。搜索

您的应用可能不支持最新的安全标准。尝试更改一些设置以允许不太安全的应用访问您的帐户。

单击链接并启用不太安全的应用程序访问。

然后它对我有用。

于 2016-05-14T08:23:05.507 回答
2

您必须启用从 Gmail 帐户获取连接的给定选项。 https://myaccount.google.com/lesssecureapps

于 2019-02-06T15:52:55.977 回答
1

我有同样的问题,我通过解锁谷歌验证码解决了这个问题。

登录 Google 帐户后转到以下 URL: https ://accounts.google.com/DisplayUnlockCaptcha

并点击按钮。

当然,您已经在Google 帐户设置的“安全”选项卡中激活了安全性较低的应用程序的访问权限;)。

它现在应该可以工作了!

于 2020-06-08T14:23:27.060 回答
0

您可以设置两步验证,然后分配一个 APP 密码以在您的请求中使用(只需将您的密码替换为应用程序提供的密码,您的正常密码不会更改。)。

这将帮助您的脚本从任何主机运行,而不会被谷歌阻止(由于登录位置的变化)。

于 2016-08-11T13:54:09.857 回答
0

notls如果未应用 SSL,您可以通过提供参数并如下连接服务器来尝试以下代码。

$hostname = '{imap.YOUR_DOMAIN.com:143/imap/notls}INBOX'; 
$username = 'YOUR_USERNAME';
$password = 'YOUR_PASSWORD';

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

如果它不会抛出任何错误,这意味着您已经成功连接到服务器。我希望这有帮助。

于 2018-12-13T08:45:10.237 回答