|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
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.
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
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
Sources en rapport avec celle ci
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
|
Téléchargements
Logiciels à télécharger sur le même thème :
|