Une librairie PHP pour GMail

Je suis actuellement en train de développer une application via le framework jQueryMobile permettant de consulter, écrire des mails pour Gmail et tout ceci pour le format tablette (type Ipad).

Ce faisant j'ai eu besoin de créer une classe permettant de centraliser toutes mes actions vers GMail que je vous propose en téléchargement à la fin de cette page.

Configuration nécessaire

  • Vous devez installer/activer php_imap et php_openssl
  • Vous devez activer le protocole IMAP dans les paramètres de GMAIL
  • Si vous utilisez la vérification en 2 etapes, vous devez impérativement créer un mot de passe spécifique à votre application que vous utiliserez comme mot de passe lors de l'utilisation de la classe. (https://support.google.com/accounts/answer/185833?hl=fr)

Utilisation

Afin de récupérer les mails, j'utilise le protocole IMAP et donc toutes les fonction php imap.

Ainsi grace à cette classe (GMailReader.php), on peut récupérer :

  • le nombre de message dans votre boite mail,
  • le nombre de message non lus,
  • les différents dossiers de votre boite mails (INBOX, spam, corbeille, dossiers personnels),
  • obtenir tous les messages non lus,
  • obtenir les messages en appliquant des filtres (obtenir les messages d'une date ou d'un destinataire, etc.),
  • et j'en passe...

Voici un exemple d'utilisation:

<?php require 'GMailReader.php'; $gmail = newGmailReader(); $gmail->openMailBox('mail', 'mot_de_passe'); $results = $gmail->getMessagesSince('Fri, 22 Oct 2010 9:00:00'); $nbMails = $gmail->getNumMessages(); $folders = $gmail->getMailBoxDirectory(); ?>

D'autres exemples d'utilisation :

  • obtenir le nombre de message non lus : $gmail->getNumUnseenMessages()
  • obtenir les messages supprimés: $mails = $gmail->getDeletedMessages()
    $mails est un tableau d'object :
    • $mails[0]->Subject ou $mails[0]->subject
    • $mails[0]->Date ou $mails[0]->date
    • $mails[0]->message_id
    • $mails[0]->toaddress
    • $mails[0]->to[0]->mailbox
    • $mails[0]->to[0]->host
    • $mails[0]->fromaddress
    • $mails[0]->from[0]->personal
    • $mails[0]->from[0]->mailbox
    • $mails[0]->from[0]->host
    • $mails[0]->reply_to[0]->personal
    • $mails[0]->reply_to[0]->mailbox
    • $mails[0]->reply_to[0]->host
    • $mails[0]->senderaddress
    • $mails[0]->sender[0]->personal
    • $mails[0]->sender[0]->mailbox
    • $mails[0]->sender[0]->host
    • $mails[0]->Recent
    • $mails[0]->Unseen
    • $mails[0]->Flagged
    • $mails[0]->Answered
    • $mails[0]->Deleted
    • $mails[0]->Draft
    • $mails[0]->Msgno
    • $mails[0]->MailDate
    • $mails[0]->Size
    • $mails[0]->udate
  • Obtenir le corps d'un mail : $body = $gmail->getBodyMessage($mails[$i]->Msgno) avec $i un index du tableau de résultat $mails retourné par une des méthodes de la classe (exemple précédent).

Je mettrai à jour régulièrement cette librairie afin de proposer le maximum de fonctionnalité.

Note

Le temps de chargement peut être long, pensez donc bien à mettre en place une stratégie de cache (via memcache ou APC)

retourner en haut de la page