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

Catégorie :E-Mail / Messagerie Classé sous : email, lire email, pièce jointe, class Niveau : Débutant Date de création : 26/11/2007 Date de mise à jour : 29/04/2008 15:56:44 Vu / téléchargé: 5 259 / 428

Note :
Aucune note

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
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\"/>&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);
  • }
  • }
  • ?>
<?
	/*
	  *  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.
 

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?

Commentaires et avis

signaler à un administrateur
Commentaire de garfield90 le 26/11/2007 15:14:36

juste un petit message pour suivre ce fil :P.
je regarderai ta classe dès que j'aurais un peu de temps

signaler à un administrateur
Commentaire de webdeb le 26/11/2007 19:20:20

Les bonnes balises php sont <?php et non <? qui peuvent être confondues avec un tag XML

signaler à un administrateur
Commentaire de garfield90 le 26/11/2007 19:39:50

juste pour info :
dans ta méthode trouverNom, tu fais (erreur plusieurs fois présentes) :

for ($i=0;$i<sizeof($dparam);$i++)



tu devrais sortir sizeof de la boucle, ca fait un calcul inutile a chaque itération (temps de perdu)

tu as des propriétés sans setter ni getter, c'est pas forcement génant, mais ca me choque un peu.
de plus, tu initialises le domaine dans la définition de ta classe, autant le faire dans une constante de classe, comme ca aucun risque qu'il y ait de modification de celle-ci

Tu devrais peut etre un peu plus/mieux découper cette classe.
De plus, tu ne devrais pas inclure la présentation a ta classe, i.e. ne pas avoir de HTML dedans
Enfin, je ne suis pas sur qu'en imap, il n'y ait que 4 "types de repertoire" (INBOX.Trash, INBOX.Draft, INBOX.Sents, INBOX), un plus serait une gestion de l'envoi et du POP

Bon courage, et merci de ta participation

signaler à un administrateur
Commentaire de malalam le 26/11/2007 20:25:35 administrateur CS

Hello,

pour rebondir sur ce que dit Garfield :
- je trouve moi génant que tu n'aies pas de getter ni de setter pour les propriétés changeantes : domaine, format des emails...Ou au moins un méthode de configuration. Tu as des accesseurs, mais puisque tu bosses en php5, pourquoi ne pas utiliser __get() ? M'enfin, ça, c'est une question de préférence après tout.
- je suis tout à fait d'accord sur le html et les css : tu devrais vraiment les sortir de là.
Pour faciliter la vie des débutants, j'aurais mis une classe output, gérant l'output donc, et basée sur un système de templating simple (et propriétaire : j'entends par là, inutile de charger un smarty ou autre...ce serait bien trop lourd pour rien. D'ailleurs, c'est touyjours trop lourd pour rien les moteurs de template à la Smarty ;-) mais ça n'engage que moi!).
- ça manque de tests d'intégrité des paramètres reçus. On peut passer n'importe quoi, ta classe essayera de s'en servir et plantera lamentablement. Encore une fois, des exceptions avec un message clair seraient les bienvenues.
- j'aime bien avoir des variables typées, moi, ça facilite nettement les choses quand on relit un code. Mais bon.
- vu que t'as inclus tout le html, autant donner ta css et les images avec le code, non? Parce que là...le faire tourner donnerait quelque chose de très moche, pour test.
- sinon c'est pas mal! Ca change un peu comme type de code, c'est agréable. Et puis c'est aéré, facile à lire.

signaler à un administrateur
Commentaire de waterw72 le 26/11/2007 20:26:31

Bonjour,
Qu'entends-tu par "un peu plus/mieux découper cette classe"?
Pourquoi faire un constante avec le domaine? Je serai obligé de faire une class par domaine alors?
Pour les répertoires imap, cette class ne permet pas de créer de nouveau répertoire donc je n'ai pas
pensé à en lister plus.

Enfin, la présentation me permet de réduire le code dans mes pages html. Il faut choisir...

Merci de ton commentaire.

signaler à un administrateur
Commentaire de malalam le 26/11/2007 20:56:36 administrateur CS

re,

"Pourquoi faire un constante avec le domaine? Je serai obligé de faire une class par domaine alors? "
=> moi je ne suis pas d'accord. Par définition, ce n'est pas une constante. Cela doit demeurer une propriété dynamique, MAIS que l'on peut setter.

Pour la présentation : si tu fais une classe output, basé par exemple sur un fichier de templating (xml ou autre), tu n'as plus de code dans tes pages html. ET on peut modifier l'apparence très facilement.
Ce n'est pas le cas ici.

Pour le découpage je laisse Garfield répondre, c'est son bin's ;-)

signaler à un administrateur
Commentaire de garfield90 le 26/11/2007 22:24:30

Je parlais de mis en constance car tu n'as pas de setter et donc ta propriété domaine ne peut a aucun moment changer donc inutile de la mettre en temps que propriété, CQFD. Je n'ai en tout cas pas voulu dire que ca DEVAIT etre une constante, dans ton cas, ca eviterai une manipulation non voulue.

Pour la séparation entre la présentation HTML et ta classe, c'est que si tu veux supprimer les tableaux pour les remplacer par autre chose, t'es obligé de modifier ta classe, ce qui ne doit jamais etre le cas.

Pour le découpage,

Je verrai à vu de nez 4 entités différentes.

- le serveur de mail (systeme de connexion)
- l'utilisateur du compte mail (permet de vérifier l'existence du compte et de vérifier aussi les params de connexion, gestion d'utilisateur etc.)
- un message : c'est une entité atomique, donc devrait quasi pouvoir etre traiter independament, voir peut etre un messageIterator (liste de message)
- une classe repertoire permettant la création, suppression de suppression, visualisation d'un répertoire de message


tu devrais peut etre/surement sortir ton utilisateur de ta classe et passer l'objet en reference au niveau du constructeur et/ou via un setter

#  $u = new Utilisateur();
# $u->lire($id_user);
# $this->utilisateur = $u->getPseudo();
# $this->password = $u->getPassword();


public function setUtilisateur(Utilisateur $oUser){
   $this->utilisateur = $oUser->getPseudo();
   $this->password    = $oUser->getPassword();
}

signaler à un administrateur
Commentaire de NicoWatt le 03/12/2007 09:53:15

Hello à tous,

Juste une petite remarque sur l'ouverture d'un compte pop.
Ayant moi-même développé ce genre d'outil, je pense que tu n'as pas pris en compte les connexions SSL.
Par exemple avec cette classe je suis presque sûr que tu ne puisses ouvrir une boîte mail Gmail ni même Wanadoo.

Si qq veux des infos à ce sujet, tell me more ;)

Bon courrage et bonne journée.

signaler à un administrateur
Commentaire de logarcon le 04/04/2008 15:47:33

bonjour,

y aurait-il par hasard moyen d'avoir un exemple d'utilisation ?

Merci

Ajouter un commentaire

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


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,718 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.