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 3017 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 261 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Mohamed dans java

Merci beaucoup j'ai eu un probleme de redimensionnement des images , mes images perdaient leur qualite, ta solution m'a aide pour ca mercii

Publié par Diégo DELPY dans CMS

IL FAUT IMPERATIVEMENT DONNER DES CHEMINS COMPLETS à pFrom et à pTo, sinon ça marche
bizzarrement.
Exemple :

// Chemin relatif : PAS BON !
pFrom := \'Bureau\\Télécharg...

Publié par Fobec dans php5

Bonjour,
vous pouvez poster un message sur le forum, la communaut vous donnera un coup de main pour la mise en place du script.

Publié par Bonjour dans java

Joli travail!
Par contre, savez vous que votre barre de progression s'arrête à un certain pourcentage?

Publié par Kezouille dans java

Bonjour Axel,

Merci pour ce petit guide qui m'a bien aide dans ma tache. En effet j'ai developpe une petite application afin de detecter l'ajout d'un fichier une image dans un repertoire et de...