Class webmail

Description

Voici une classe que j'utilise pour mon site perso. Elle permet de lister les boîtes mails et de lire les mails avec pièces jointes.

Source / Exemple :


<?
	/*

  • r = ressource
b = boolean s = string i = integer o = object (class)
  • /
class WebMail { private $rFlux; private $sServeur; private $sServeur_option; private $sCurrent_boite; private $sUtilisateur; private $sPassword; private $iNb_msg; private $iNb_unread_msg; private $sDomaine = "generationweb.be"; private $aBoites = Array(); //tableau des boîtes private $aApercu = Array(); //tableau d'aperçu d'une boîte private $sMailFormat = "PLAIN"; // HTML ou PLAIN private $sSelectBoxes = ""; // contient le code HTML d'une liste déroulante contenant les boîtes mail. //accesseur function getFlux() { return $this->rFlux;} function getServeur() { return $this->serveur;} function getCurrentBoite() { return $this->sCurrent_boite;} function getUtilisateur() { return $this->utilisateur;} function getBoxeCount() { return sizeof($this->aBoites);} //############################## constructeur ########################################## function __construct ( $sServ = "", $sSrv_opt = "", Utilisateur $oUser ) { // test des paramètres try { if (!is_string($sServ)) throw new exception('erreur : WebMail(). sServ must be a string'); if (!is_string($sSrv_opt)) throw new exception('erreur : WebMail(). sSrv_opt must be a string'); if(!is_object($oUser)) throw new exception('erreur : WebMail(). sSrv_opt must be a object'); } catch (Exception $e) { echo $e->getMessage()."\n"; return false; } // fin : test des paramètres // affectation $this->sServeur = "{".$sServ."}"; // {pop.generationweb.be} $this->sServeur_option = "{".$sServ."/".$sSrv_opt."}"; // {pop.generationweb.be/norsh} $this->sCurrent_boite = "INBOX"; // boîte par défaut $this->sUtilisateur = $oUser->getPseudo(); // login du compte mail $this->sPassword = $oUser->getPassword(); // password du compte mail $this->iNb_msg = 0; // nombre de message $this->iNb_unread_msg = 0; // nombre de message non lus } /**
  • @name open
  • Ouvrir une boîte mail
  • @param String sBoite : nom de la boîte à ouvrir
*
  • @return true | false.
  • /
public function open ($sBox = "") { // test du paramètre try { if (!is_string($sBox)) throw new exception('erreur : WebMail->Open(). sBox must be a string'); } catch (Exception $e) { echo $e->getMessage()."\n"; return false; } // fin : test du paramètre // affectation $this->sCurrent_boite = "".$sBox; // ouverture de la boite $this->rFlux = imap_open($this->sServeur_option.$this->sCurrent_boite, $this->sUtilisateur."@".$this->sDomaine, $this->sPassword); // retour if ($this->rFlux) return true; else return false; } /**
  • @name close
  • Fermer une boîte mail
*
  • @return true | false.
  • /
public function close () { return imap_close($this->rFlux); } /**
  • @name supprimer
  • Supprimer un message
*
  • @return true | false.
  • /
public function supprimer( $iIdMsg) { // test du paramètre try { if (!is_numeric($iIdMsg)) throw new exception('erreur : WebMail->supprimer(). iIdMsg must be a numeric'); } catch (Exception $e) { echo $e->getMessage()."\n"; return false; } // fin : test du paramètre if( $this->sCurrent_boite == "INBOX.Trash") { imap_delete($this->rFlux, $iIdMsg); // suppression de la poubelle imap_expunge($this->rFlux); return true; } else { imap_mail_move($this->rFlux, $iIdMsg, "INBOX.Trash"); // déplacement dans la poubelle imap_expunge($this->rFlux); return true; } } /**
  • @name déplacer
  • Déplacer un message
*
  • @return true | false.
  • /
function deplacer( $iIdMsg, $sBoxTo) { // test des paramètres try { if (!is_numeric($iIdMsg)) throw new exception('erreur : WebMail->deplacer(). iIdMsg must be a numeric'); if (!is_string($sBox)) throw new exception('erreur : WebMail->deplacer(). sBoxTo must be a string'); } catch (Exception $e) { echo $e->getMessage()."\n"; return false; } // fin : test des paramètres imap_mail_move($this->rFlux, $iIdMsg, $sBoxTo); imap_expunge($this->rFlux); return true; } /**
  • @name getBoxes
  • Récupérer les boîtes mail dans un tableau
*
  • @return array | false.
  • /
function getBoxes () { $aTmp = imap_getmailboxes($this->rFlux, $this->sServeur, "*"); $ret = ""; if (is_array($aTmp) ) { reset($aTmp); $select = "<select name=\"listbox\" id=\"listbox\" style=\"width:120px;\">\n"; while( list($cle, $valeur) = each($aTmp) ) { //nom de la boîte sans le serveur $start = strlen($this->sServeur); $len = strlen(imap_utf7_decode($valeur->name)) - strlen($this->sServeur); $sBoxName = substr(imap_utf7_decode($valeur->name), $start, $len); $this->aBoites[] = $sBoxName; $select .= "<option value=\"$sBoxName\">$sBoxName</option>\n"; } $select .= "</select>\n"; $this->selectboxes = $select; } else { return false; } return $this->aBoites; } //############################## listmsg ########################################## function getMailHeaders() { //récupération du nombre de messages $this->iNb_msg = imap_num_msg($this->rFlux); if (!$this->iNb_msg) { return array(); } $this->aApercu = imap_fetch_overview( $this->rFlux, "1:".$this->iNb_msg); if (!is_array($this->aApercu)) { return false; } return $this->aApercu; } //############################## Affichage des barres de boutons ########################################## public function print_read_bar($id_msg) { $tab_header = "<div id=\"bar_btn\">\n"; $tab_header .= "<table cellpadding=\"0\" cellspacing=\"0\">\n"; $tab_header .= "<tr>\n"; $tab_header .= "<td>\n"; $tab_header .= "<a href=\"formmail.php\">\n"; $tab_header .= "<img src=\"images/design/i_compose.gif\" border=\"0\"/>&nbsp;Nouveau</a>\n"; $tab_header .= "</td>\n"; $tab_header .= "<td>\n"; $tab_header .= "<a href=\"formmail.php?id_msg=$id_msg\" onclick=\"#\">\n"; $tab_header .= "<img src=\"images/design/i_reply.gif\" border=\"0\"/>&nbsp;Répondre</a>\n"; $tab_header .= "</td>\n"; $tab_header .= "<td>\n"; $tab_header .= "<a href=\"?action=delete&id_msg=$id_msg\" onclick=\"#\">\n"; $tab_header .= "<img src=\"images/design/i_delete.gif\" border=\"0\"/>&nbsp;Supprimer</a>\n"; $tab_header .= "</td>\n"; $tab_header .= "<td>\n"; $tab_header .= "<a href=\"webmail.php\"><img src=\"images/design/i_inbox.gif\" border=\"0\"/>&nbsp;Retour</a>\n"; $tab_header .= "</td>\n"; $tab_header .= "</tr>\n"; $tab_header .= "</table>\n"; $tab_header .= "</div>\n"; print($tab_header); } public function print_reply_bar($id_msg) { $tab_header = "<div id=\"bar_btn\">\n"; $tab_header .= "<table cellpadding=\"0\" cellspacing=\"0\">\n"; $tab_header .= "<tr>\n"; $tab_header .= "<td>\n"; $tab_header .= "<a href=\"#\" onclick=\"envoi.submit();\">\n"; $tab_header .= "<img src=\"images/design/i_send.gif\" border=\"0\"/>&nbsp;Envoyer</a>\n"; $tab_header .= "</td>\n"; $tab_header .= "<td>\n"; $tab_header .= "<a href=\"#\" onclick=\"document.getElementById('iframe_container').style.display='block';\">\n"; $tab_header .= "<img src=\"images/design/i_attachment_action.gif\" border=\"0\"/>&nbsp;Joindre</a>\n"; $tab_header .= "</td>\n"; $tab_header .= "<td>\n"; $tab_header .= "<a href=\"webmail.php\"><img src=\"images/design/i_inbox.gif\" border=\"0\"/>&nbsp;Retour</a>\n"; $tab_header .= "</td>\n"; $tab_header .= "</tr>\n"; $tab_header .= "</table>\n"; $tab_header .= "</div>\n"; print($tab_header); } } ?>

Conclusion :


Merci de me laisser vos remarques concernant ma façon de coder.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.