CrazyCat Programming Factory
rendre internet plus accessible
 

Classe de connexion POP3

Logo phpVous constaterez très vite que nous utilisons les fonctions imap. Cela est dû au fait que IMAP et POP sont les mêmes protocoles à la différence que IMAP traite les mails sur le serveur mail, POP traite les mails en local.
class pop3 {
   var $server; // Adresse du serveur, obligatoire
   var $user; // Nom d'utilisateur
   var $pass; // Mot de passe
   var $folder = 'INBOX'; // Répertoire sur le serveur (INBOX par défaut)
   var $port = 110; // Port du serveur (défaut: 110)

   function pop3() {
      // Constructeur
      @list($this->server,
         $this->user,
         $this->pass,
         $this->ufolder,
         $this->uport) = func_get_args();
         if ($this->ufolder == "") $this->ufolder = $this->folder;
         if ($this->uport == "") $this->uport = $this->port;
   }

   function connect() {
      // Ouverture de la connexion
      $str_conn = "{".$this->server.":".$this->port."/pop3}".$this->folder;
      $this->conn = imap_open($str_conn, $this->user, $this->pass) or die("Can't connect to $str_conn");
   }

   function close() {
      // Fermeture de la connexion
      imap_expunge($this->conn);
      imap_close($this->conn);
      $this->conn = false;
   }

   function del($int_mail) {
      // Méthode pour supprimer un mail
      imap_delete($this->conn, $int_mail);
   }

   function parse_header($headers) {
      // Méthode pour mettre en forme les entêtes
      $from = $headers->from;
      foreach($from as $id => $object) {
         @$this->from['name'] = $object->personal;
         $this->from['email'] = strtolower($object->mailbox."@".$object->host);
      }
      $this->subject = $headers->subject;
      $this->sent = $headers->udate;
   }

   function body($int_mail) {
      // Méthode pour récupérer le corps d'un mail
      $this->body = imap_body($this->conn, $int_mail);
   }
}
Seules deux fonctions sont à expliquer: - close() ne fait pas que fermer la connexion, elle fait d'abord un imap_expunge() qui permet en fait de forcer la suppression des emails marqués pour la destruction par del(). - parse_header() renvoit: un tableau contenant l'expéditeur (son nom et son email), le sujet sous forme de chaîne et la date d'envoi du mail (timestamp unix). L'utilisation de cette classe est très simple:
$test = new pop3("mail.domain.com", "myself@domain.com", "password");
$test->connect();
echo "Il y a ".imap_num_msg($test->conn)." mails dans la boite\n";
for ($i=1; $i<=imap_num_msg($test->conn); $i++) {
   $test->parse_header(imap_headerinfo($test->conn, $i));
   echo "Mail from <b>".$test->from['name']."</b> <".$test->from['email']."> envoyé le ".date("d/m/Y H:i", $test->sent)."Sujet: ".$test->subject."\n";
   echo $test->body($i)."<hr>";
}
$test->close();

©2006-2019 Geek Zone | eggdrop.fr | zeolia.net