Connecting to Gmail IMAP PHP “Couldn't open stream”

柔情痞子 提交于 2019-12-01 03:02:16

You need port 993, the SSL IMAP port.

Port 995 is the SSL POP3 port.

I think Gmail's IMAP can only be accessed on port 993.

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

MrGapo

I had the same error and found a different solution. I have added debug info into host:

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

When I read php error log, I found

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

Open link, and follow instructions. Search for

Your app might not support the latest security standards. Try changing a few settings to allow less secure apps access to your account.

Click on link and enable less secure app access.

Then it works for me.

You have to enable the given option from Gmail account get connected to Gmail server from another device or web. https://myaccount.google.com/lesssecureapps

You can setup 2 step authentication and then assign an APP password to use in your requests (just replace your password with the one provided for the app, your normal password doesn't change.).

This will help your script run from any host without google blocking it (due to a change in login location).

You can try the following code by giving a notls argument and connecting the server like follows, if SSL is not applied.

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

If it will not throw any error, this means that you are succesfully connected to server then. I hope this helps.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!