连接到Gmail的IMAP PHP“无法打开流”

问题描述 投票:11回答:6

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

这里是我的代码:

$hostname = '{imap.gmail.com:995/imap/ssl/novalidate-cert}'; 
$username = '[email protected]'; $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开]:无法打开流{imap.gmail.com:995/imap/ssl/novalidate-cert}在上线/home/a8066360/public_html/test/imap.php 6

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

我注意到,如果我改变了单引号`

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

请帮忙!!!

php gmail imap shell-exec
6个回答
12
投票

你需要993端口,在SSL的IMAP端口。

端口995是SSL POP3端口。


6
投票

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

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


2
投票

我有同样的错误,并发现不同的解决方案。我已经加入调试信息到主机:

"{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

打开链接,并按照指示。搜索

您的应用程序可能不支持最新的安全标准。试着改变一些设置,允许不够安全的应用访问您的帐户。

点击链接并允许不够安全的应用访问。

然后,它为我工作。


0
投票

您可以设置2步验证,然后分配应用程式密码,在你的请求使用(只需更换与规定的程序,一般密码不会改变一个密码)。

这将有助于谷歌没有任何主机上运行脚本阻止它(由于登录位置的变化)。


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());

如果它不会引发任何错误,这意味着你成功地连接到服务器,然后。我希望这有帮助。


0
投票

你必须能够从Gmail帐户给定的选项获得从其他设备或网络连接到Gmail服务器。 https://myaccount.google.com/lesssecureapps

© www.soinside.com 2019 - 2024. All rights reserved.