Publié le 10/01/2011
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Charger les emails sur son compte Gmail

Depuis 2004, Google propose une application de messagerie nommée Gmail, ce service est accessible en ligne à partir d'un navigateur internet. En utilisant une connexion SSL et IMAP, une class PHP est capable de charger les messages à partir de la boite de réception GMail.

Class PHP de lecture des emails: GmailClient.php

Dans ce tutoriel, regroupons dans une class nommée GmailClient.php, les principales fonction de lecture d'une boite de messagerie.
<?php
/**
 * Charger les emails sur GMAIL
 * @author Fobec 2010
 */
 
class GmailClient {
    /** connexion avec le serveur de messagerie Gmail */
    private $mbox=null;
    /** Adresse du serveur gmail, connexion SSL **/
    const gmailAddress='{imap.gmail.com:993/ssl}';
 
    /**
     * Ouvrir une liaison avec GMail
     * @param string $user nom d'utilisateur
     * @param string $pass mot de passe
     */
    public function connect($user, $pass) {
        $this->mbox = @imap_open(GmailClient::gmailAddress, $user, $pass);
        if (!$this->mbox) {
            throw new Exception("Fail to open Gmail Mailbox !!!"."n".imap_last_error());
        }
    }
 
    /**
     * Fermer la liaison avec GMail
     */
    public function close() {
        imap_close($this->mbox);
    }
 
    /**
     * Lire le contenu de la boite de reception
     * @return int nombre de message
     */
    public function count() {
        if (imap_ping($this->mbox)) {
            return imap_num_msg($this->mbox);
        } else {
            throw new Exception("Connection to open has been closed !!!");
        }
    }
 
    /**
     * Charger tous les entetes des messages
     * @return array
     */   
    public function allHeaders() {
        if (imap_ping($this->mbox)) {
            return imap_headers($this->mbox);
        } else {
            throw new Exception("Connection to open has been closed !!!");
        }
    }
 
    /**
     * Charger l'entete d'un message
     * @param int $num numero du message
     * @return array
     */
    public function header($num) {
        if (imap_ping($this->mbox)) {
            return imap_header($this->mbox,$num);
        } else {
            throw new Exception("Connection to open has been closed !!!");
        }
    }
 
    /**
     * Charger le contenu d'un message
     * @param int $num numero du message
     * @return string body au format encodé
     */
    public function body($num) {
        if (imap_ping($this->mbox)) {
            return imap_body($this->mbox,$num);
        } else {
            throw new Exception("Connection to open has been closed !!!");
        }
    }
}
?>

Exemple: connaitre le nombre de message dans la boite de réception

Utilisons la class GmailClient.php pour connaitre le nombre de messages dans la boite de réception GMail.
<?php
require_once('GmailClient.php');
$user='username';
$password='motdepasse';
try {
    $gmailClient=new GmailClient();
    $gmailClient->connect($user, $password);
    $count= $gmailClient->count();
    echo "la boite de reception de ".$user." contient ".$count." message(s)";
    $gmailClient->close();
}  catch (Exception $e) {
    echo $e->getMessage();
}
?>

Résultat:
la boite de reception de fobec contient 3285 message(s)

Exemple: charger l'entêtes et le corps du messages

L'entête et le corps d'un émail contiennent les informations affichées dans tous les messages. L'exemple charge ces données pour le dernier message reçu.
<?php
require_once("GmailClient.php");
$user='username';
$password='motdepasse';
try {
    $gmailClient=new GmailClient();
    $gmailClient->connect($user, $password);
    $count= $gmailClient->count();
    $header=$gmailClient->header($count);
    $body=$gmailClient->body($count);
    $gmailClient->close();
}  catch (Exception $e) {
    echo $e->getMessage();
}
?>
Pour afficher le dernier message, il suffit d'extraire les données à partir des variables $header et $body chargées ci-dessus.
<?php
echo 'Sujet :'.$header->subject;
echo 'Expediteur:'.$header->fromaddress;
echo 'Date:'.$header->date;
echo 'Corps du message'.$body;
?>

Conclusion

Ce tutoriel est une première approche de lecture d'email à partir d'une boite de réception. Le protocole IMAP offre de nombreuses possibilités par rapport à l'ancien POP3.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
php5 - class
Mise a jour
10/01/2011
Visualisation
vu 3728 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 267 articles
|BIO_PSEUDO|
Commentaires récents

Publié par foufou0406 dans CMS

merci !!!

Publié par options binaires dans php5

genial l'outil ! merci

Publié par jadu dans tuto

Et comment met-on en route Xinha lorsque l'extension a été chargée dans Firefox ?????

je n'ai rien trouvé !!!

Publié par Loualfcha dans CMS

Je n'arrive pas &Atilde;&nbsp; installer le logiciel<br>Message d'erreur: DeleteFile a &Atilde;&copy;chou&Atilde;&copy;; code 5<br>Acc&Atilde;&um...

Publié par Fobec dans php5

Merci Souti d'avoir signale la balise manquante,
le code est corrige dans l'exemple.