Accueil > > > CLASS WEBMAIL
CLASS WEBMAIL
Information sur la source
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
- <?
- /*
- * 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\"/> 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\"/> 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\"/> 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\"/> 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\"/> 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\"/> 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\"/> Retour</a>\n";
- $tab_header .= "</td>\n";
- $tab_header .= "</tr>\n";
- $tab_header .= "</table>\n";
- $tab_header .= "</div>\n";
- print($tab_header);
- }
- }
-
- ?>
<?
/*
* 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\"/> 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\"/> 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\"/> 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\"/> 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\"/> 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\"/> 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\"/> 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.
Historique
- 29 avril 2008 15:56:45 :
- Modification de la class en fonction des commentaires :
- plus de HTML/CSS dans le code(sauf pour 2 fct d'affichage)
- plus de sizeof() dans les boucles.
- une classe email distincte.
- l'utilisateur n'est plus dans la classe.
A Faire :
- d'autres classes : dossier, compte mail (ou dans utilisaeur?)
- typé les variables.
- setter / getter.
- SSL?
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Envoie d'email [ par Zibou ]
Bonjour,Je voudrai savoir si c'est possible d'envoyer des emails au format HTML en incluent c'est image dans le courierMerci
Inscription et email d'acitvation [ par Elyianha ]
Allo! en gros la, je crée un jeux online multiplayer..Je dois savoir comment, lors de l'inscription, une clé d'activation (un simple link a cliker) es
VOUS VOULEZ DE L'AIDE? J'AI DES RÉPONSES [ par SmallToad ]
Bonjour,Depuis quelque temps, je n'ai pas beaucoup d'email de fan qui me demande des questions sur le MySQL ou sur le PHP. C'est pourquoi que j'ai mis
class,PDF,XLS et boucles..... [ par booth ]
bonjour!j'ai un méga problème...je dois générer un PDF et une grillle excel toutes deux issues d'un moteur de recherche...pour le moteur de recherche
Test sur présence d'un pseudo dans une base [ par Masterfight ]
Est-ce que j'ai bon ?Sachant que je passe $pseudo et $email.if ($ecrirecookie == "inscrire"){ $table="membres"; $query = "SELECT * from matable where
Récupération d'une partie d'adresse email ? [ par Joez ]
je veux recupérer ce k'il y a avant l'@ dans une adresse email, en php, comment faire ?
Problème de compatibilité de script [ par Chris54 ]
Bonjour,J'ai un problème d'execution d'un script javascript sous netscape alors qu'il fonctionne parfaitement sous IE mais je ne sais pas pourquoi.Que
EMail [ par BSide ]
Bonjour,je construis dynamiquement en PHP un tableau avec des données provenant d'une base Mysql.Parmi ces données se trouve un champ concernant l'ema
Envoyer des coordonnees au membres [ par apz ]
salut,je suis sur multimania.comment envoyer, par mail, au membres de mon site, leurs coordonnées (Login & Mot de passe) dans leurs boites email respe
email + php [ par lpikachu58 ]
Comment on fait pour envoyer un mail avec php?be linux
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : SONDAGE..RE : SONDAGE.. par phpAnonyme
Cliquez pour lire la suite par phpAnonyme RE : SONDAGE..RE : SONDAGE.. par TychoBrahe
Cliquez pour lire la suite par TychoBrahe
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|