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();
}
?>
<?php
echo 'Sujet :'.$header->subject;
echo 'Expediteur:'.$header->fromaddress;
echo 'Date:'.$header->date;
echo 'Corps du message'.$body;
?>