Connect to Gmail with PHP & IMAP

2019-03-13 11:10发布

问题:

I have enabled OpenSSL and IMAP functions from my php.ini file and phpinfo() confirms it.

By using the code below i can connect to a Hotmail account but not to a Gmail account.(of course i change the $connect_to to point to Hotmail.)

$connect_to = '{imap.gmail.com:993/imap/ssl}INBOX';
$connection = imap_open($connect_to, $user, $password)
  or die("Can't connect to '$connect_to': " . imap_last_error());
imap_close($connection);

The returned error is

Warning: imap_open(): Couldn't open stream {imap.gmail.com:993/imap/ssl}INBOX in /opt/lampp/htdocs/webmail_client_practise/index.php on line 6
Can't connect to '{imap.gmail.com:993/imap/ssl}INBOX': Certificate failure for imap.gmail.com: unable to get local issuer certificate: /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
Notice: Unknown: Certificate failure for imap.gmail.com: unable to get local issuer certificate: /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA (errflg=2) in Unknown on line 0

Unfortunately i cannot find a complete tutorial of how to use the IMAP functions.

Any ideas, solutions or suggestions will be helpful.

回答1:

UPDATE:

After searching for my problem on the Internet, i did not found a solution that solves my problem completely. Although if

1) I use the insecure $connect_to = '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX';

2)And allow gmail to be accessed by less secured apps,

solves my problem for now.

Please check this https://support.google.com/accounts/answer/6010255?hl=en



回答2:

If you get blocked, this can be because google sees a login from a new device.

Go to your google account and check https://myaccount.google.com/device-activity and let them know the 'Unknown device is ok to use'.



回答3:

First check your date and time settings on your server are correct.

Alternatively try:

$connect_to = '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX',

This will stop it from trying to validate certificate.

I will probably get downvotes from people telling me this is bad practice as this leaves you open to Man in the Middle attacks. Which is true.



标签: php ssl gmail imap