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

Publié par jmc dans CMS

Autre lien de chargement : http://www.fobec.com/protec/logiciels2/encadre.php3?id_log=217&cat=VBureautique

Publié par stam dans tuto

Le code est interessant. Que doit contenir le fichier index ?

Publié par Djrac dans tuto

Bjr.
J'ai essaye ce code mais en cliquant sur f5 il me donne un autre temps d'execution malgre qu'il s'agit du meme page PHP. Je comprends pas ou il est le probleme.
Merci de m...

Publié par Marcos dans java

Bon travail , mais il a quelque chose d'etrange ! Je devais faire l'interface publique de classe avec des variables de position separees Position NORMAL = null; Position RIGHT = null; et posit...

Publié par Fobec dans java

Les images statiques sont aussi devenues payantes chez Google. Donc sans compte et une cle, l'image ne se chargera pas.
Je vous conseille de passer sur un autre fournisseur de carte, le code re...