f4b1.com
***

Comment lister le contenu d'une boite mail en PHP avec IMAP

By Admin on 2017-07-15 13:44:31

Nombre de vues : 21906


Dans ce tutoriel nous allons voir comment récupérer le contenu de votre boite mail à l'aide des fonctions IMAP de PHP qui sont destinées à cet usage. Gardez à l'esprit que pour les différents exemples que nous allons voir dans cet article, il s'agit d'une boite mail fourni fournie par OVH qui est disponible et livrée lorsque vous prenez un hébergement web de base par exemple.

Pour les autres fournisseurs d'adresses email tel que les gros géants du secteur comme Live / Hotmail, Gmail, Yahoo, un autre hébergeur web, ou encore avec le FAI tel que les @free.fr, @sfr.fr, @orange.fr c'est tout à fait possible aussi mais il faudra modifier la configuration par rapport aux exemples que je vous propose sur cet article comme les ports par exemple.

Nous verrons dans un futur article comment consulter le contenu d'un mail de votre boite de réception, comment supprimer un mail ou le marquer comme lu. De quoi récréer votre propre webmail minimaliste et ses bugs fait maison, la classe non ? Le script de départ et encore relativement minimaliste qui vous permet de lister les emails présents dans votre boite de réception est le suivant :

  1. $server = '{ssl0.ovh.net:143}INBOX';
  2. $username = 'adresse@domaine.net';
  3. $password = 'mdp!';
  4. $mailbox = imap_open($server , $username, $password);
  5. $mails = FALSE;
  6. if (FALSE === $mailbox) {
  7. $err = 'La connexion a échoué. Vérifiez vos paramètres!';
  8. } else {
  9. $info = imap_check($mailbox);
  10. if (FALSE !== $info) {
  11. // le nombre de messages affichés est entre 1 et 50
  12. // libre à vous de modifier ce paramètre
  13. $nbMessages = min(50, $info->Nmsgs);
  14. $mails = imap_fetch_overview($mailbox, '1:'.$nbMessages, 0);
  15. } else {
  16. $err = 'Impossible de lire le contenu de la boite mail';
  17. }
  18. }
  19. if (FALSE === $mails) {
  20. echo $err;
  21. } else {
  22. $informationboite = 'La boite aux lettres contient '.$info->Nmsgs.' message(s) dont '.
  23. $info->Recent.' recent(s)';
  24. foreach ($mails as $mail) {
  25. echo 'Objet : ' . (iconv_mime_decode($mail->subject,0, "ISO-8859-1")) . ' Date de r;&eacutception : ' . $mail->date . '
    '
    ;
  26. }
  27. }
  28. ?>

Dans cet exemple, quelques explications s'imposent sur les fonctions PHP utilisés et la configuration.

  1. $server = '{ssl0.ovh.net:143}INBOX';

Comme vous vous en doutez ces informations ne tombent pas du ciel et une petite analyse s'impose. Ainsi l'adresse ssl0.ovh.net correspond au serveur de réception des emails chez OVH et donc si vous passez par un autre prestataire, il faudra modifier cette valeur pour aller chercher les mails au bon endroit.

Ensuite, le "143" correspond au port du serveur entrant chez OVH avec le SSL qui n'est pas actif si on passe par ce port, sinon il s'agit de "993" pour avoir le SSL. Encore une fois, il faudra trouver cette information chez votre prestataire qui vous fournit votre adresse mail et sa boite de réception.

Enfin, la mention "INBOX" correspond à la boite par défaut où arrivent vos mails chez OVH, mais cette valeur peut changer si vous avez créé des sous-boites de réception (un dossier professionnel et personnel par exemple). Tout ça pour dire, dans de nombreux cas il s'agit de "INBOX" mais pas toujours alors faites attention à ce détail lorsque vous allez vouloir accéder aux mails de votre boite de réception.

Petite mention supplémentaire, j'ai utilisé la fonction PHP iconv_mime_decode car j'avais des soucis d'encodage de caractères dans ma page de test basique, cette fonction a résolu le problème dans mon cas mais cela dépend des contextes alors faites aussi attention à ce détail, mais de toute façon, vous devriez rapidement vous rendre compte du problème.

Articles de la même catégorie :