有很多遇到类似问题的人,但没有人回答他们的问题。我在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开]:无法打开流{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()已被禁用出于安全原因...
请帮忙!!!
你需要993端口,在SSL的IMAP端口。
端口995是SSL POP3端口。
我认为Gmail的IMAP只能在993端口进行访问。
$hostname = "{imap.gmail.com:993/imap/ssl/novalidate-cert}";
我有同样的错误,并发现不同的解决方案。我已经加入调试信息到主机:
"{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
打开链接,并按照指示。搜索
您的应用程序可能不支持最新的安全标准。试着改变一些设置,允许不够安全的应用访问您的帐户。
点击链接并允许不够安全的应用访问。
然后,它为我工作。
您可以设置2步验证,然后分配应用程式密码,在你的请求使用(只需更换与规定的程序,一般密码不会改变一个密码)。
这将有助于谷歌没有任何主机上运行脚本阻止它(由于登录位置的变化)。
您可以通过给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());
如果它不会引发任何错误,这意味着你成功地连接到服务器,然后。我希望这有帮助。
你必须能够从Gmail帐户给定的选项获得从其他设备或网络连接到Gmail服务器。 https://myaccount.google.com/lesssecureapps