Dans l'exemple suivant, voyons comment lire sa boite Gmail dans un flux RSS. En effet, au travers d'une simple requête, Google retourne dans un flux l'état actuel de son compte messagerie.
Lire le flux Gmail avec GmailAtom
La class prend en charge la communication avec le serveur Gmail et le décodage des données réceptionnées. Cet échange est en lecture seule et retourne les propriétés suivantes:- unreadCount: nombre total de message non lu,
- dateLastMsg: date du dernier message,
- inbox: messages non lus les plus récents.
<?php
/**
* GMail: recevoir ses nouveaux emails dans un flux rss
*
* @author Fobec 01/2013
* @copyright http://www.fobec.com/php5/1124/lire-boite-gmail-dans-flux-rss.html
*/
class GmailAtom {
const URL_GMAIL = "https://mail.google.com/mail/feed/atom";
private $feed='';
public $unreadCount=0;
public $dateLastMsg='';
public $inbox=array(array('date'=>'','subject'=>'','exp_name'=>'','exp_adr'=>''));
public function check($user,$pwd) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, self::URL_GMAIL);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_USERPWD, $user . ":" . $pwd);
$this->feed= curl_exec($curl);
$code=curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($code==200) {
return $this->parse();
}
return false;
}
private function parse() {
$xml=@simplexml_load_string($this->feed);
if (isset($xml->fullcount)) {
$this->unreadCount=$xml->fullcount;
$dt=str_replace(array('T','Z'),' ',$xml->modified);
$this->dateLastMsg=date("d/m/Y H:i:s", strtotime($dt));
$this->inbox=array();
foreach($xml->entry as $row) {
$mail=array();
$dt=str_replace(array('T','Z'),' ',$row->modified);
$mail['date']=date("d/m/Y H:i:s", strtotime($dt));
$mail['subject']=utf8_decode((string)$row->title);
$mail['exp_name']=utf8_decode((string)$row->author->name);
$mail['exp_adr']=utf8_decode((string)$row->author->email);
$this->inbox[]=$mail;
}
return true;
} else {
return false;
}
}
}
?>
Cas pratique de reception d'email
L'ensemble des opérations est pris en charge par la class, il suffit de renseigner le nom d'utilisateur et son mot de passe Gmail.<?php
$gmail=new GmailAtom();
$gmail->check('identifiant', 'motdepasse');
echo 'Total non lu: '.$gmail->unreadCount.' messages<br>';
echo 'Dernier email du: '.$gmail->dateLastMsg.'<br>';
foreach($gmail->inbox as $mail) {
echo $mail['date']."t".' <b>De:</b>'.$mail['exp_name'].' ('.$mail['exp_adr'].') <b>Object:</b>'.$mail['subject'].'<br>';
}
?>
Lire sa boite Gmail dans un flux est idéal pour développer une application d'alerte, en cas de réception d'un nouvel email.