14

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!!!

Rikesh
  • 26,156
  • 14
  • 79
  • 87
cream
  • 1,129
  • 5
  • 16
  • 26

7 Answers7

13

You need port 993, the SSL IMAP port.

Port 995 is the SSL POP3 port.

Max
  • 10,701
  • 2
  • 24
  • 48
  • it's literally the same exact error I posted above. Same line and everything. different port. – cream Aug 02 '12 at 17:54
  • Warning: imap_open() [function.imap-open]: Couldn't open stream {imap.gmail.com:993/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,993: Connection timed out – cream Aug 02 '12 at 17:54
  • 2
    You may be firewalled? From that system, can you make a connection to imap.google.com? Try `telnet imap.google.com 993`. You won't be able to use it (since it's SSL), but you should be able to see if the connection succeeds. – Max Aug 02 '12 at 18:17
5

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

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

Xhezairi
  • 544
  • 6
  • 17
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.

Andrew
  • 18,680
  • 13
  • 103
  • 118
MrGapo
  • 348
  • 3
  • 10
2

You have to enable the Google Enable Less Secure App option from Gmail account get connected.

And a requirement for this, you have to first disable your 2-step-verification from here:

google account -> settings -> security

Abilogos
  • 4,777
  • 2
  • 19
  • 39
Amal
  • 62
  • 1
  • 8
0

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.

Shahrukh Anwar
  • 2,544
  • 1
  • 24
  • 24
0

I had the same issue and I fixed it by unlocking the Google captcha.

Go to the following URL while signed in to the Google account : https://accounts.google.com/DisplayUnlockCaptcha

And click on the button.

Of course, you already had activated the access for less secure apps in the Security tab of your Google account settings ;).

It should work now !

-1

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

Ryan Steyn
  • 69
  • 4