begin process at 2012 02 12 20:02:44
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

E-Mail / Messagerie

 > CLASS WEBMAIL

CLASS WEBMAIL


 Information sur la source

Note :
Aucune note
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é :8 094 / 670

Auteur : waterw72

Ecrire un message privé
Site perso
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

Les Membres Club peuvent 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

Source avec Zip Source avec une capture UNE CLASS SITEMAP POUR AFFICHER L'ARBORESCENCE DE VOTRE SITE...
CLASS E-MAIL
ENREGISTRER UNE IMAGE D'UN SITE DISTANT
Source avec Zip Source avec une capture FUNCTION CAPTCHA
Source avec Zip CRÉATION DE MINIATURE D'UNE IMAGE

 Sources de la même categorie

Source avec Zip Source avec une capture FORM TO MAIL AVEC PROTECTION PAR TOKEN ET CAPTCHA CONTRÔLES ... par cod57
Source avec Zip Source avec une capture FORMULAIRE VERS COURRIEL BASIQUE AVEC CONTRÔLE CAPTCHA ANTI ... par cod57
Source avec Zip CHAT EN PHP ET JQUERY par pitchoubrazil
Source avec Zip Source avec une capture FORMULAIRE DE CHOIX MULTI-CONTACT VALIDE XHTML 1.0 TRANSITIO... par aventurier19
Source avec Zip Source avec une capture WEB MESSENGER par EvildarkEurope

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CLASSE DE MESSAGERIE par janhsh
Source avec Zip CLASS MAIL GESTION COMPLÈTE par cerede2000
Source avec Zip CLASS D' ENVOIE DE MAIL EN SMTP par ImmortalPC
Source avec Zip CLASS PERMETTANT DE LIRE SES MAILS MSN ET DE SE REDIRIGER DA... par codefalse
Source avec Zip FORMULAIRE PERMETTANT D'ENVOYER UN E-MAIL (AVEC PIÈCES JOINT... par triumphs

Commentaires et avis

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

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

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

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.

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.

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 ;-)

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();
}

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.

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

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,945 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales