Connecting to Gmail IMAP PHP “Couldn't open st

2020-03-10 05:17发布

问题:

There are lots of people having similar issues but no one is answering their questions. I have IMAP enabled in PHP, Using all the correct information. I don't see where I'm going wrong.

Here's my code:

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

Not returning any errors other than:

Warning: imap_open() [function.imap-open]: Couldn't open stream {imap.gmail.com:995/imap/ssl/novalidate-cert} in /home/a8066360/public_html/test/imap.php on line 6

Cannot connect to Gmail: Can't connect to gmail-imap.l.google.com, 995: Connection timed out

I've noticed that if I change the single quotes to `

shell_exec() has been disabled for security reasons...

Please help!!!

回答1:

You need port 993, the SSL IMAP port.

Port 995 is the SSL POP3 port.



回答2:

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

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



回答3:

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.



回答4:

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



回答5:

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).



回答6:

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.