web-dev-qa-db-fra.com

Connectez-vous à Gmail avec PHP & IMAP

J'ai activé les fonctions OpenSSL et IMAP à partir de mon fichier php.ini Et phpinfo() le confirme.

En utilisant le code ci-dessous, je peux me connecter à un compte Hotmail mais pas à un compte Gmail (bien sûr, je change le $connect_to Pour pointer vers 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);

L'erreur retournée est

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

Malheureusement, je ne trouve pas de tutoriel complet sur l'utilisation des fonctions IMAP.

Toutes les idées, solutions ou suggestions seront utiles.

11
Makis

MISE À JOUR:

Après avoir recherché mon problème sur Internet, je n'ai pas trouvé de solution qui résout complètement mon problème. Bien que si

1) J'utilise l'insécurité $connect_to = '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX';

2) Et autorisez l'accès à gmail par less secured apps,

résout mon problème pour l'instant.

Veuillez vérifier cela https://support.google.com/accounts/answer/6010255?hl=en

16
Makis

Si vous êtes bloqué, cela peut être dû au fait que google voit une connexion depuis un nouvel appareil.

Accédez à votre compte Google et vérifiez https://myaccount.google.com/device-activity et faites-leur savoir que "l'appareil inconnu est autorisé à utiliser".

2
Johan Velthuis

Vérifiez d'abord que vos paramètres de date et d'heure sur votre serveur sont corrects.

Essayez également:

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

Cela l'empêchera d'essayer de valider le certificat.

Je vais probablement recevoir des votes négatifs de la part de personnes me disant que c'est une mauvaise pratique car cela vous laisse ouvert aux attaques de Man in the Middle. Ce qui est vrai.

1
Antony D'Andrea