Nouveau sujet Répondre Imprimer Syndication RSS 2.0

[dev] class d'envoi d'email....

Equipe des MODS
Avatar de Grummfy
  • Age : 23 ans
  • Messages : 5428
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 25 Octobre 2004, 21:59

Reprise du dernier message

bon la version sans templates fonctionne parfaitement....
par contre la versiona vec templates grrrr....

donc voici une version sans templates au cas ou il y aurais besoin....

le fichier se nome class_fsb_mail.php, se met dans includes/class, pour l(utiliser, faites :
include( $racine . 'includes/class/class_fsb_mail.php' );
$mail = new fsb_mail();


pour envoyer un message rapidement (oui je sais ca existe déja mais bon en attendant que se soit plus déveloper.....)
$mail->envoi_mail_simple('destinataire@domaine.com','vous@domaine.com','votre emssage','votre sujet....')


le reste je pense que le fichier est assez explicite....

sinon si problème il y as je vous écoute.....

mais promit jkebosse sur le probleme des templates....

<?php
/*******************************************************************************
*
*		    [ ./includes/class/class_fsb_mail.php (français) ]
*
*	--------------------------------------------------------------------------
*	Commencé le : 	20 octobre 2004
*	Copyright : 	Grummfy
*	Site Web : 		http://www.grummfy.com
*	E-mail : 		grummfy@yahoo.fr
*	--------------------------------------------------------------------------
*	Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les 
*	termes de la Licence Publique Générale GNU publiée par la Free Software Foundation 
*	(version 2). Reportez-vous à  la Licence Publique Générale GNU pour plus de détails. 
*	Vous devez avoir reçu une copie de la Licence Publique Générale GNU en même temps 
*	que ce programme ; si ce n'est pas le cas, écrivez à  la Free Software Foundation, 
*	Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, à‰tats-Unis. 
*	--------------------------------------------------------------------------
*	Derniére modification le 24 octobre 2004 par Grummfy pour FSB RC1
*	Templates : 0
*
*******************************************************************************/

class fsb_mail
{
/******************************************************************************
* déclaration de variables de la classe
*******************************************************************************/

	// le destinataire
	var $destinataire = array();
	// l'expéditeur du message
	var $expediteur = array();
	// la date du jour de l'envoi lol, pas une constante, on ne sais jamais
	var $date_du_jour;
	// la partie header du message ce qui est en général cacher mais bon faut bien le definir
	var $headers = array();
	// sujet du message
	var $sujet;
	// le message à  propremetn parler
	var $message;
	// la signature du message
	var $signature;
	// le type de mail, html(true) ou texte(false)
	var $type_mail;
	// date du jour formatée
	var $date_du_jour_formate;

/******************************************************************************
* constructeur de la classe
*******************************************************************************/
	// par défaut on n'utilise pas le syteme de templates
	function fsb_mail()
	{
		$this->reset_tout();
	}

/******************************************************************************
*******************************************************************************/

	//
	// on choisi si le mail est en html ou en txt
	// html(true)ou(1) ou texte(false)ou(0)
	//
	function type_mail($htmloutxt)
	{
		global $langue;

		if ($htmloutxt == TRUE)
		{
		    $this->type_mail = $htmloutxt;
			$this->type_mime_mail('text/html; charset="' . $langue['charset'] . '"');
		}
		elseif ($htmloutxt == FALSE)
		{
			$this->type_mail = $htmloutxt;
			$this->type_mime_mail('text/plain; charset="' . $langue['charset'] . '"');
		}
		else
		{
			echo('erreur ligne 117');
		}
	}

/******************************************************************************
* méthode de la classe
*              mail : - rapide, sans tpl et juste du texte,....
*******************************************************************************/

	//
	// pour envoyer rapidement un mail en mode texte c'est ici
	//
	function envoi_mail_simple($to,$from,$message,$sujet)
	{
		$this->message($message);
		$this->sujet_mail($sujet);
		$this->exp_mail($from);
		$this->dest_mail($to);
		$this->type_mail(false);
		$var = $this->envoi();
		
		return $var;
	}

/******************************************************************************
* méthode de la classe
*              mail : - général
*******************************************************************************/

	//
	// formate la date
	//
	function formate_date($format = '')
	{
		global $membre, $config;

		if ($format=='')
		{
			if ( isset($membre['membre_date_format']) )
			{
			    $this->date_du_jour_formate = date($membre['membre_date_format'], $this->date_du_jour);
			}
			else
			{
				$this->date_du_jour_formate = date($config['date_format'], $this->date_du_jour);
			}
		}
		else
		{
			$this->date_du_jour_formate = date($format, $this->date_du_jour);
		}
	}

/******************************************************************************
* méthode de la classe
*              mail : - expéditeur, récepteur et autres
*******************************************************************************/

	//
	// on donne l'adresse du destinatarie et si on le désire son nom
	//
	function dest_mail($mail_destinataire, $nom_destinataire ='')
	{
		// si le nom du destinataire est défini on lui met son nom sinon on envoi juste l'adresse.
		if( $nom_destinataire == '' )
		{
			$this->destinataire['to'] = trim($mail_destinataire);
		}
		else
		{
			$mail_to = ' <' . trim($mail_destinataire) . '>';
			$nom_to = '"' . trim($nom_destinataire) . '"';
			$mail_dest = $nom_to . $mail_to;
			$this->destinataire['to'] = trim($mail_dest);
		}
	}

	//
	// destinataire du mail en copie séparer par des virgules
	//
	function dest_mail_copie($mail_destinataire, $nom_destinataire ='')
	{
		// si le nom du destinataire est défini on lui met son nom sinon on envoi juste l'adresse.
		if( $nom_destinataire == '' )
		{
			$this->destinataire['cc'][] = trim($mail_destinataire);
		}
		else
		{
			$mail_cc = ' <' . trim($mail_destinataire) . '>';
			$nom_cc = '"' . trim($nom_destinataire) . '"';
			$mail_dest = $nom_cc . $mail_cc;
			$this->destinataire['cc'][] = trim($mail_dest);
		}
	}

	//
	// destinataire du mail en copie CACHà‰ séparer par des virgules
	//
	function dest_mail_copie_cache($mail_destinataire, $nom_destinataire ='')
	{
		// si le nom du destinataire est défini on lui met son nom sinon on envoi juste l'adresse.
		if( $nom_destinataire == '' )
		{
			$this->destinataire['bcc'][] = trim($mail_destinataire);
		}
		else
		{
			$mail_bcc = ' <' . trim($mail_destinataire) . '>';
			$nom_bcc = '"' . trim($nom_destinataire) . '"';
			$mail_dest = $nom_bcc . $mail_bcc;
			$this->destinataire['bcc'][] = trim($mail_dest);
		}
	}

	//
	// expéditeur du messsage
	//
	function exp_mail($mail_expediteur, $nom_expediteur ='')
	{
		if ($nom_expediteur == '')
		{
		    $this->expediteur['from'] = trim($mail_expediteur);
		}
		else
		{
			$mail_from = ' <' . trim($mail_expediteur) . '>';
			$nom_from = '"' . trim($nom_expediteur) . '"';
			$mail_exp = $nom_from . $mail_from;
			$this->expediteur['from'] = trim($mail_exp);
		}
	}

	//
	// repondre à 
	//
	function exp_mail_repondre($mail_expediteur_repondre_a, $nom_expediteur_repondre_a = '')
	{
		if ($nom_expediteur_repondre_a == '')
		{
		    $this->expediteur['reply-to'] = trim($mail_expediteur_repondre_a);
		}
		else
		{
			$mail_reply_to = ' <' . trim($mail_expediteur_repondre_a) . '>';
			$nom_reply_to = '"' . trim($nom_expediteur_repondre_a) . '"';
			$mail_exp_rep = $nom_reply_to . $mail_reply_to;
			$this->expediteur['reply-to'] = trim($mail_exp_rep);
		}
	}

/******************************************************************************
* méthode de la classe
*              mail : - spécification du headers
*******************************************************************************/

	//
	// permet l'ajout d'options spécial au headers
	// 
	// ATTENTION bien comprendre les headers pour pouvoir l'utiliser
	// quelques explication suplémentaires là  : http://phpcodeur.net/articles/php/emails
	//
	function headers_mail($type, $headers)
	{
		$this->headers[$type] = trim($headers);
	}

	//
	// definit la priorité du message de 1 à  5
	//
	function priorite_mail($prior)
	{
		$this->headers_mail('X-Priority', $prior);
	}

	//
	// definit l'adresse de retour en cas d'erreur
	//
	function erreur_mail($erreur_mail)
	{
		$this->headers_mail('Return-Path', $erreur_mail);
	}

	//
	// donne le type mime du mail
	//
	function type_mime_mail($type)
	{
		$this->headers_mail('Content-Type', $type);
	}

	//
	// utiliser la notification de mail et donner l'adresse de reception de cette notification
	//
	function notification_mail($maildenotification)
	{
		$this->headers_mail('Disposition-Notification-To', $maildenotification);
	}

	//
	//  définit l'encodage utilisé par le contenu de l'email ou une partie de celui-ci
	//
	function encodage_mail($encodage_mail)
	{
		$this->headers_mail('Content-Transfer-Encoding', $encodage_mail);
	}

/******************************************************************************
* méthode de la classe
*              mail : - messsage, sujet, signature
*******************************************************************************/

	//
	// met le sujet du mail
	//
	function sujet_mail($sujet)
	{
		$this->sujet = trim($sujet);
	}

	//
	// met le message
	//
	function message($message)
	{
		if ($message != '')
		{
		    $this->message = $message;
		}
		else
		{
			echo('erreur ligne 422');
		}
	}

	//
	// on dfinit la signature si il y as lieu
	//
	function signature($sign)
	{
		$this->signature = $sign;
	}

/******************************************************************************
* méthode de la classe
*              mail : - envoi du mail....
*******************************************************************************/

	//
	// on envoi l'email avec tout ce qui à  été précédement prédéfinit
	// renvoi true ou false, true -> le mail à  été envoyer, false le mail n'as pas été envoyer.
	//
	function envoi()
	{
		global $racine, $config, $langue;

		$entete = '';
		$entete = 'From: ' . $this->expediteur['from'] . "\n";

	    $entete .= (isset($this->expediteur['reply-to']) && $this->expediteur['reply-to'] != '') ? 'Reply-to: ' . $this->expediteur['reply-to'] . "\n" : '' ;

		if ($this->destinataire['cc'] > 0)
		{
			// on sépare les destinataires par des virgules
			$copie_mail = implode(", ", $this->destinataire['cc']);
		    $entete .= ($copie_mail != '') ? 'Cc: ' . $copie_mail . "\n" : '' ;
		}
		if ($this->destinataire['bcc'] > 0)
		{
			// on sépare les destinataires par des virgules
			$copie_cache_mail = implode(", ", $this->destinataire['bcc']);
			$entete .= ($copie_cache_mail != '') ? 'Bcc: ' . $copie_cache_mail . "\n" : '' ;
		}
		$this->headers['Date'] = $this->date_du_jour_formate;
		$this->headers['X-Mailer'] = 'FSB ' . $langue['FSB_VERSION'];
		$this->headers['X-AntiAbuse']  = 'Sender IP - ' . $_SERVER['REMOTE_ADDR'] . '/Server Name - <' . $_SERVER['SERVER_NAME'] . '>';
		$this->headers['MIME-Version'] = '1.0'; 
		
		// si il n'y as pas de type défii c'est du texte par défaut
		if ( !isset($this->headers['Content-Type']) )
		{
			$this->type_mime_mail('text/plain; charset="' . $langue['charset'] . '"');
		}

		// on met générer le messag_id qui caractérise un message unique....
		$this->headers['Message-ID:'] = '<' . md5(uniqid(rand())) . '@' . $config['nom_serveur'] . '>';

		if ($this->headers > 0)
		{
			foreach($this->headers as $key => $value)
			{
				$entete .= $key . ': ' . $value . "\n";
			}
		}

		// pour eviter des bug on enleve tout les retours à  la ligne 
		$dest = str_replace("/\r\n?/", "", $this->destinataire['to']);
		$sujet = str_replace("/\r\n?/", "", $this->sujet);
		// evite quelque bug et double retour à  la ligne....
		if(!$this->type_mail)
		{
			$msg = str_replace("/\r\n?/", "\n", $this->message);
			if ( isset($this->signature) )
			{
			    $msg = $msg . "\n\n~~~~~~~~~~~~~~~~~~~~\n" . $this->signature;
			}
		}
		else
		{
			$msg = str_replace("/\r\n?/", "<br />", $this->message);
			$msg = str_replace("/\n?/", "<br />", $this->message);
			if ( isset($this->signature) )
			{
			    $msg = $msg . '<br /><br /><hr />' . $this->signature;
			}
		}

		$result = @mail($dest, $sujet, $msg, $entete);

		return $result;
	}

/******************************************************************************
* méthode de la classe
*              mail : - tout ce qu'il faut pour remttre tout ou une partie à  0...
*******************************************************************************/

	//
	// remet le tout à  0
	//
	function reset_tout()
	{
		global $config;

		$this->destinataire = array('to' => '', 'cc' => array(), 'bcc' => array());
		$this->expediteur = array('from' => '', 'reply-to' => '');
		$this->date_du_jour = time();
		$this->formate_date($config['date_format']);
		$this->headers = array();
		$this->sujet = '';
		$this->message = '';
		$this->signature = '';
		// par defaut type texte
		$this->type_mail(FALSE);
	}

	//
	// on réinitalise le message
	//
	function reset_message()
	{
		$this->message = '';
	}

	//
	// on remet à  0 les destinataires
	//
	function reset_destinataire()
	{
		$this->destinataire = array('to' => '', 'cc' => array(), 'bcc' => array());
	}

	//
	// on réinitialise l'expéditeur
	//
	function reset_expediteur()
	{
		$this->expediteur =array('from' => '', 'reply-to' => '');
	}

	//
	// on remet le sujet à  0
	//
	function reset_sujet()
	{
		$this->sujet = '';
	}

	//
	// on remet la signature à  0
	//
	function reset_signature()
	{
		$this->signature = '';
	}
}
?>


"La gravité est le bonheur des imbéciles" Charles de Montesquieu > "T'as raison, L'apesanteur c'est plus rigolo" Hébus de Phalompe (Troll de Troy)
http://www.grummfy.com/download/crea/smileys/fsb2.gif Mods fsb1 - Mods fsb2 - Mon forum - Grummfy's project
 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14359
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 26 Octobre 2004, 10:19
Ok c'est cool ça, pour les systèmes de templates on voit ca aujourd'hui :)


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Equipe des MODS
Avatar de Grummfy
  • Age : 23 ans
  • Messages : 5428
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 28 Octobre 2004, 12:08
oki, on vera ça ce soir alors.....

vu que hier tu bossais..


"La gravité est le bonheur des imbéciles" Charles de Montesquieu > "T'as raison, L'apesanteur c'est plus rigolo" Hébus de Phalompe (Troll de Troy)
http://www.grummfy.com/download/crea/smileys/fsb2.gif Mods fsb1 - Mods fsb2 - Mon forum - Grummfy's project
 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14359
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 28 Octobre 2004, 13:18
Enfin de compte je me demande si c'est une bonne idée les templates, ca va faire trop phpBB non après?


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Equipe des MODS
Avatar de Grummfy
  • Age : 23 ans
  • Messages : 5428
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 28 Octobre 2004, 17:38
non, je pense pas.... de plus les méthodes utiliser son totalemenbt différents, et c'est nettement plus chouette de pouvoir utiliser des temapltes enfin je pense...

mais bon à la limite on passse ça et on y revient plus tard si il faut....


"La gravité est le bonheur des imbéciles" Charles de Montesquieu > "T'as raison, L'apesanteur c'est plus rigolo" Hébus de Phalompe (Troll de Troy)
http://www.grummfy.com/download/crea/smileys/fsb2.gif Mods fsb1 - Mods fsb2 - Mon forum - Grummfy's project
 
Equipe des MODS
Avatar de Grummfy
  • Age : 23 ans
  • Messages : 5428
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 29 Octobre 2004, 1:46
bon après quelque modifications et test voici la version debase, bientà´t il devrait y avoir la possibiliter d'ajouter des pièces jointes... mais le reste ne bougera pas. Pas de gestion de templates.

<?php
/*******************************************************************************
*
*		    [ ./includes/class/class_fsb_mail.php (français) ]
*
*	--------------------------------------------------------------------------
*	Commencé le : 	20 octobre 2004
*	Copyright : 	Grummfy
*	Site Web : 		http://www.grummfy.com
*	E-mail : 		grummfy@yahoo.fr
*	--------------------------------------------------------------------------
*	Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les 
*	termes de la Licence Publique Générale GNU publiée par la Free Software Foundation 
*	(version 2). Reportez-vous à  la Licence Publique Générale GNU pour plus de détails. 
*	Vous devez avoir reçu une copie de la Licence Publique Générale GNU en même temps 
*	que ce programme ; si ce n'est pas le cas, écrivez à  la Free Software Foundation, 
*	Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, à‰tats-Unis. 
*	--------------------------------------------------------------------------
* 
*	Derniére modification le 29 octobre 2004 par Grummfy pour FSB RC1
*	Templates : 0
*
*******************************************************************************/

/******************************************************************************
* 
*  ATTENTION si vous utiliser des templates, vous devez définir le type_mail...
* 
*******************************************************************************/

class fsb_mail
{
/******************************************************************************
* déclaration de variables de la classe
*******************************************************************************/

	// le destinataire
	var $destinataire = array();
	// l'expéditeur du message
	var $expediteur = array();
	// la date du jour de l'envoi lol, pas une constante, on ne sais jamais
	var $date_du_jour;
	// la partie header du message ce qui est en général cacher mais bon faut bien le definir
	var $headers = array();
	// sujet du message
	var $sujet;
	// le message à  propremetn parler
	var $message;
	// la signature du message
	var $signature;
	// le type de mail, html(true) ou texte(false)
	var $type_mail;
	// date du jour formatée
	var $date_du_jour_formate;

/******************************************************************************
* constructeur de la classe
*******************************************************************************/
	// par défaut on n'utilise pas le syteme de templates
	function fsb_mail()
	{
		$this->reset_tout();
	}

/******************************************************************************
*******************************************************************************/

	//
	// on choisi si le mail est en html ou en txt
	// html(true)ou(1) ou texte(false)ou(0)
	//
	function type_mail($htmloutxt)
	{
		global $langue;

		if ($htmloutxt == TRUE)
		{
		    $this->type_mail = $htmloutxt;
			$this->type_mime_mail('text/html; charset="' . $langue['charset'] . '"');
		}
		elseif ($htmloutxt == FALSE)
		{
			$this->type_mail = $htmloutxt;
			$this->type_mime_mail('text/plain; charset="' . $langue['charset'] . '"');
		}
		else
		{
			info($langue['er_titre'],$langue['mail_type'] , __LINE__, __FILE__);
		}
	}

/******************************************************************************
* méthode de la classe
*              mail : - rapide, sans tpl et juste du texte,....
*******************************************************************************/

	//
	// pour envoyer rapidement un mail en mode texte c'est ici
	//
	function mail_simple($to,$from,$message,$sujet)
	{
		$this->message($message);
		$this->sujet_mail($sujet);
		$this->exp_mail($from);
		$this->dest_mail($to);
		$this->type_mail(false);
		$result = $this->envoi();

		return $result;
	}

/******************************************************************************
* méthode de la classe
*              mail : - général
*******************************************************************************/

	//
	// formate la date
	//
	function formate_date($format = '')
	{
		global $membre, $config;

		if ($format=='')
		{
			if ( isset($membre['membre_date_format']) )
			{
			    $this->date_du_jour_formate = date($membre['membre_date_format'], $this->date_du_jour);
			}
			else
			{
				$this->date_du_jour_formate = date($config['date_format'], $this->date_du_jour);
			}
		}
		else
		{
			$this->date_du_jour_formate = date($format, $this->date_du_jour);
		}
	}

/******************************************************************************
* méthode de la classe
*              mail : - expéditeur, récepteur et autres
*******************************************************************************/

	//
	// on donne l'adresse du destinatarie et si on le désire son nom
	//
	function dest_mail($mail_destinataire, $nom_destinataire = '')
	{
		// on test si le destinataire est déja défini, si oui alors on envoi tout en cc
		if (trim($this->destinataire['to']) != '')
		{
			if (trim($nom_destinataire) != '')
			{
			    $this->cc_mail($mail_destinataire, $nom_destinataire);
			}
		    else
			{
				$this->cc_mail($mail_destinataire);
			}
		}
		else
		{
			// si le nom du destinataire est défini on lui met son nom sinon on envoi juste l'adresse.
			if( trim($nom_destinataire) == '' )
			{
				$this->destinataire['to'] = trim($mail_destinataire);
			}
			else
			{
				$mail_to = ' <' . trim($mail_destinataire) . '>';
				$nom_to = '"' . trim($nom_destinataire) . '"';
				$mail_dest = $nom_to . $mail_to;
				$this->destinataire['to'] = trim($mail_dest);
			}
		}
	}

	//
	// destinataire du mail en copie séparer par des virgules
	//
	function cc_mail($mail_destinataire, $nom_destinataire ='')
	{
		if (is_array($mail_destinataire))
		{
		    if (is_array($nom_destinataire))
			{
				for($i = 0; $i <= count($mail_destinataire);$i++)
				{
					$mail_cc = ($nom_destinataire[$i] != '') ? ' <' . trim($mail_destinataire[$i]) . '>' : trim($mail_destinataire[$i]);
					$nom_cc = ($nom_destinataire[$i] != '') ? '"' . trim($nom_destinataire[$i]) . '"' : '';
					$mail_dest = $nom_cc . $mail_cc;
					$this->destinataire['cc'][] = trim($mail_dest);
				}
		    }
			else
			{
				for($i = 0; $i <= count($mail_destinataire);$i++)
				{
					$this->destinataire['cc'][] = trim($mail_destinataire[$i]);
				}
			}
		}
		else
		{
			// si le nom du destinataire est défini on lui met son nom sinon on envoi juste l'adresse.
			$mail_cc = ($nom_destinataire != '') ? ' <' . trim($mail_destinataire) . '>' : trim($mail_destinataire);
			$nom_cc = ($nom_destinataire != '') ? '"' . trim($nom_destinataire) . '"' : '';
			$mail_dest = $nom_cc . $mail_cc;
			$this->destinataire['cc'][] = trim($mail_dest);
		}
	}

	//
	// destinataire du mail en copie CACHà‰ séparer par des virgules
	//
	function bcc_mail($mail_destinataire, $nom_destinataire ='')
	{
		if (is_array($mail_destinataire))
		{
		    if (is_array($nom_destinataire))
			{
				for($i = 0; $i <= count($mail_destinataire);$i++)
				{
					$mail_bcc = ($nom_destinataire[$i] != '') ? ' <' . trim($mail_destinataire[$i]) . '>' : trim($mail_destinataire[$i]);
					$nom_bcc = ($nom_destinataire[$i] != '')?'"' . trim($nom_destinataire[$i]) . '"' : '';
					$mail_dest = $nom_bcc . $mail_bcc;
					$this->destinataire['bcc'][] = trim($mail_dest);
				}
		    }
			else
			{
				for($i = 0; $i <= count($mail_destinataire);$i++)
				{
					$this->destinataire['bcc'][] = trim($mail_destinataire[$i]);
				}
			}
		}
		else
		{
			// si le nom du destinataire est défini on lui met son nom sinon on envoi juste l'adresse.
			$mail_bcc = ($nom_destinataire != '') ? ' <' . trim($mail_destinataire) . '>' : trim($mail_destinataire);
			$nom_bcc = ($nom_destinataire != '')?'"' . trim($nom_destinataire) . '"' : '';
			$mail_dest = $nom_bcc . $mail_bcc;
			$this->destinataire['bcc'][] = trim($mail_dest);
		}
	}

	//
	// expéditeur du messsage
	//
	function exp_mail($mail_expediteur, $nom_expediteur ='')
	{
		if ( trim($this->expediteur['from']) != '')
		{
			info($langue['er_titre'], $langue['mail_from'], __LINE__, __FILE__);
		}
		else
		{
			if ($nom_expediteur == '')
			{
			    $this->expediteur['from'] = trim($mail_expediteur);
			}
			else
			{
				$mail_from = ' <' . trim($mail_expediteur) . '>';
				$nom_from = '"' . trim($nom_expediteur) . '"';
				$mail_exp = $nom_from . $mail_from;
				$this->expediteur['from'] = trim($mail_exp);
			}
		}
	}

	//
	// repondre à 
	//
	function exp_mail_repondre($mail_expediteur_repondre_a, $nom_expediteur_repondre_a = '')
	{
		if ( trim($this->expediteur['reply-to']) != '')
		{
			info($langue['er_titre'], $langue['mail_replyto'], __LINE__, __FILE__);
		}
		else
		{
			if ($nom_expediteur_repondre_a == '')
			{
			    $this->expediteur['reply-to'] = trim($mail_expediteur_repondre_a);
			}
			else
			{
				$mail_reply_to = ' <' . trim($mail_expediteur_repondre_a) . '>';
				$nom_reply_to = '"' . trim($nom_expediteur_repondre_a) . '"';
				$mail_exp_rep = $nom_reply_to . $mail_reply_to;
				$this->expediteur['reply-to'] = trim($mail_exp_rep);
			}
		}
	}

/******************************************************************************
* méthode de la classe
*              mail : - spécification du headers
*******************************************************************************/

	//
	// permet l'ajout d'options spécial au headers
	// 
	// ATTENTION bien comprendre les headers pour pouvoir l'utiliser
	// quelques explication suplémentaires là  : http://phpcodeur.net/articles/php/emails
	//
	function headers_mail($type, $headers)
	{
		$this->headers[$type] = trim($headers);
	}

	//
	// definit la priorité du message de 1 à  5
	//
	function priorite_mail($prior)
	{
		$this->headers_mail('X-Priority', $prior);
	}

	//
	// definit l'adresse de retour en cas d'erreur
	//
	function erreur_mail($erreur_mail)
	{
		$this->headers_mail('Return-Path', $erreur_mail);
	}

	//
	// donne le type mime du mail
	//
	function type_mime_mail($type)
	{
		$this->headers_mail('Content-Type', $type);
	}

	//
	// utiliser la notification de mail et donner l'adresse de reception de cette notification
	//
	function notification_mail($maildenotification)
	{
		$this->headers_mail('Disposition-Notification-To', $maildenotification);
	}

	//
	//  définit l'encodage utilisé par le contenu de l'email ou une partie de celui-ci
	//
	function encodage_mail($encodage_mail)
	{
		$this->headers_mail('Content-Transfer-Encoding', $encodage_mail);
	}

/******************************************************************************
* méthode de la classe
*              mail : - messsage, sujet, signature
*******************************************************************************/

	//
	// met le sujet du mail
	//
	function sujet_mail($sujet)
	{
		$this->sujet = trim($sujet);
	}

	//
	// met le message
	//
	function message($message)
	{
		if (trim($this->message) == '')
		{
		    $this->message = $message;
		}
		else
		{
			info($langue['er_titre'], $langue['mail_message'], __LINE__, __FILE__);
		}
	}

	//
	// on dfinit la signature si il y as lieu
	//
	function signature($sign)
	{
		if (trim($this->signature) == '')
		{
		    $this->signature = $sign;
		}
		else
		{
			info($langue['er_titre'], $langue['mail_sign'], __LINE__, __FILE__);
		}
	}

/******************************************************************************
* méthode de la classe
*              mail : - envoi du mail....
*******************************************************************************/

	//
	// on envoi l'email avec tout ce qui à  été précédement prédéfinit
	// renvoi true ou false, true -> le mail à  été envoyer, false le mail n'as pas été envoyer.
	//
	function envoi()
	{
		global $racine, $config, $langue;

		$entete = '';
		if ( trim($this->expediteur['from']) == '' )
		{
			info($langue['er_titre'], $langue['mail_nofrom'], __LINE__, __FILE__);
		}
		else
		{
			$entete = 'From: ' . $this->expediteur['from'] . "\n";
		}
		if ( trim($this->expediteur['reply-to']) == '' )
		{
			$this->expediteur['reply-to'] = $this->expediteur['from'];
		}

	    $entete .= (isset($this->expediteur['reply-to']) && $this->expediteur['reply-to'] != '') ? 'Reply-to: ' . $this->expediteur['reply-to'] . "\n" : '' ;

		if ($this->destinataire['cc'] > 0)
		{
			// on sépare les destinataires cc par des virgules
			$copie_mail = implode(", ", $this->destinataire['cc']);
		    $entete .= ($copie_mail != '') ? 'Cc: ' . $copie_mail . "\n" : '' ;
		}
		if ($this->destinataire['bcc'] > 0)
		{
			// on sépare les destinataires bcc par des virgules
			$copie_cache_mail = implode(", ", $this->destinataire['bcc']);
			$entete .= ($copie_cache_mail != '') ? 'Bcc: ' . $copie_cache_mail . "\n" : '' ;
		}
		$this->headers['Date'] = $this->date_du_jour_formate;
		$this->headers['X-Mailer'] = 'FSB ' . $langue['FSB_VERSION'];
		$this->headers['X-AntiAbuse']  = 'Sender IP - ' . $_SERVER['REMOTE_ADDR'] . '/Server Name - <' . $_SERVER['SERVER_NAME'] . '>';
		$this->headers['MIME-Version'] = '1.0'; 
		
		// si il n'y as pas de type défii c'est du texte par défaut
		if ( !isset($this->headers['Content-Type']) )
		{
			$this->type_mime_mail('text/plain; charset="' . $langue['charset'] . '"');
		}

		// on met générer le messag_id qui caractérise un message unique....
		$this->headers['Message-ID'] = '<' . md5(uniqid(rand())) . '@' . $config['nom_serveur'] . '>';

		if ($this->headers > 0)
		{
			foreach($this->headers as $key => $value)
			{
				$entete .= $key . ': ' . $value . "\n";
			}
		}

		// pour eviter des bug on enleve tout les retours à  la ligne 
		if (trim($this->destinataire['to']) == '')
		{
		    info($langue['er_titre'], $langue['mail_noto'], __LINE__, __FILE__);
		}
		else
		{
			$dest = str_replace("/\r\n?/", "", $this->destinataire['to']);
		}
		$sujet = str_replace("/\r\n?/", "", $this->sujet);
		// evite quelque bug et double retour à  la ligne....
		if(!$this->type_mail)
		{
			$msg = str_replace("/\r\n?/", "\n", $this->message);
			if ( isset($this->signature) )
			{
			    $msg = $msg . "\n\n~~~~~~~~~~~~~~~~~~~~\n" . $this->signature;
			}
		}
		else
		{
			$msg = str_replace("/\r\n?/", "<br />", $this->message);
			$msg = str_replace("/\n?/", "<br />", $this->message);
			if ( isset($this->signature) )
			{
			    $msg = $msg . '<br /><br /><hr />' . $this->signature;
			}
		}

		$result = @mail($dest, $sujet, $msg, $entete);

		return $result;
	}

/******************************************************************************
* méthode de la classe
*              mail : - tout ce qu'il faut pour remttre tout ou une partie à  0...
*******************************************************************************/

	//
	// remet le tout à  0
	//
	function reset_tout()
	{
		global $config;

		$this->destinataire = array('to' => '', 'cc' => array(), 'bcc' => array());
		$this->expediteur = array('from' => '', 'reply-to' => '');
		$this->date_du_jour = time();
		$this->formate_date($config['date_format']);
		$this->headers = array();
		$this->sujet = '';
		$this->message = '';
		$this->signature = '';
		// par defaut type texte
		$this->type_mail(FALSE);
	}
// fin de la class
}
?>

il faut aussi ajouter ceci dans langue_erreur.php
// mail
$langue['mail_type'] = 'Le type de mail est soit vrai soit faux, vous avez du vous tromper';
$langue['mail_from'] = 'L\'expéditeur est déjà  définit';
$langue['mail_replyto'] = 'L\'adresse de réponse est déja définie';
$langue['mail_message'] = 'Le message à  déja été definit';
$langue['mail_sign'] = 'La signature à  déja été définie';
$langue['mail_noto'] = 'Vous avez oublier de préciser le destinataire du mail';
$langue['mail_nofrom'] = 'Vous avez oublier de préciser l\'expéditeur du mail';

et dans fichier_config.php dans le tableau
'nom_serveur' => 'localhost',

et dans langue_forum.php
$langue['charset'] = 'iso-99820554';


voila....


"La gravité est le bonheur des imbéciles" Charles de Montesquieu > "T'as raison, L'apesanteur c'est plus rigolo" Hébus de Phalompe (Troll de Troy)
http://www.grummfy.com/download/crea/smileys/fsb2.gif Mods fsb1 - Mods fsb2 - Mon forum - Grummfy's project
 
Equipe des MODS
Avatar de Grummfy
  • Age : 23 ans
  • Messages : 5428
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 11 Novembre 2004, 18:25
j'ai presque fini, je vérifie le tout et j'envoi....

j'expliquerait comment l'utiliser si il faut....

bon dans langue_erreur.php
ajouter:
// mail
$langue['mail_type'] = 'Le type de mail est soit vrai soit faux, vous avez du vous tromper';
$langue['mail_from'] = 'L\'expéditeur est déjà  définit';
$langue['mail_replyto'] = 'L\'adresse de réponse est déja définie';
$langue['mail_message'] = 'Le message à  déja été definit';
$langue['mail_sign'] = 'La signature à  déja été définie';
$langue['mail_noto'] = 'Vous avez oublier de préciser le destinataire du mail';
$langue['mail_nofrom'] = 'Vous avez oublier de préciser l\'expéditeur du mail';
$langue['mail_set_file'] = 'Le fichier n\'existe pas.';
$langue['mail_use_tpl'] = 'Petite erreur : Vous avez oublier de définir si vous utilisiez les templates ou pas.';
$langue['mail_message_vide'] = 'Vous avez oublié de définir le message.';

dans langue_forum.php
ajouter
// charset
$langue['charset'] = 'iso-99820554';

fichier : class_mail.php
<?php
/*******************************************************************************
*
*		    [ ./includes/class/class_mail.php (français) ]
*
*	--------------------------------------------------------------------------
*	Commencé le : 	20 octobre 2004
*	Copyright : 	Grummfy
*	Site Web : 		http://www.grummfy.com
*	E-mail : 		grummfy@yahoo.fr
*	--------------------------------------------------------------------------
*	Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les 
*	termes de la Licence Publique Générale GNU publiée par la Free Software Foundation 
*	(version 2). Reportez-vous à  la Licence Publique Générale GNU pour plus de détails. 
*	Vous devez avoir reçu une copie de la Licence Publique Générale GNU en même temps 
*	que ce programme ; si ce n'est pas le cas, écrivez à  la Free Software Foundation, 
*	Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, à‰tats-Unis. 
*	--------------------------------------------------------------------------
* 
*	Derniére modification le 11 novembre 2004 par Grummfy pour FSB RC1
*	Templates : 0
*
*******************************************************************************/

/******************************************************************************
* 
*  ATTENTION si vous utiliser des templates, vous devez définir le type_mail et la langue...
* 
*******************************************************************************/

class fsb_mail
{
/******************************************************************************
* déclaration de variables de la classe
*******************************************************************************/

	// le destinataire
	var $destinataire = array();
	// l'expéditeur du message
	var $expediteur = array();
	// la date du jour de l'envoi lol, pas une constante, on ne sais jamais
	var $date_du_jour;
	// la partie header du message ce qui est en général cacher mais bon faut bien le definir
	var $headers = array();
	// sujet du message
	var $sujet;
	// le message à  propremetn parler
	var $message;
	// la signature du message
	var $signature;
	// le type de mail, html(true) ou texte(false)
	var $type_mail;
	// date du jour formatée
	var $date_du_jour_formate;
	// utiliser si on utilise les templates
	var $tpl_mail;
	var $tpl_src;
	// langue du mail utiliser s on utilise les templates
	var $langue_mail;
	// définit si on utilise des tpl ou pas, true si on en utilise pas , false si on en utilise
	var $not_use_tpl;

/******************************************************************************
* constructeur de la classe
*******************************************************************************/
	// par défaut on n'utilise pas le syteme de templates
	function fsb_mail()
	{
		$this->reset_tout();
	}

/******************************************************************************
*******************************************************************************/

	//
	// si on utilise les tpl, il faut obligatoirement passer par ici.....
	//
	function use_tpl()
	{
		$this->tpl_mail = new Template('.');
		$this->not_use_tpl = FALSE;
	}

	//
	// on choisi si le mail est en html ou en txt
	// html(true)ou(1) ou texte(false)ou(0)
	//
	function type_mail($htmloutxt)
	{
		global $langue;

		if ($htmloutxt == TRUE)
		{
		    $this->type_mail = $htmloutxt;
			$this->type_mime_mail('text/html; charset="' . $langue['charset'] . '"');
		}
		else
		{
			$this->type_mail = $htmloutxt;
			$this->type_mime_mail('text/plain; charset="' . $langue['charset'] . '"');
		}
	}

/******************************************************************************
* méthode de la classe
*              mail : - en cas d'utilisation des templates
*******************************************************************************/

	//
	// permet de transmettre les valeur à  assigner au templates
	//
	function dval($valeur)
	{
		$this->tpl_mail->assign_vars($valeur);
	}

	//
	// on définit le nom du fichier tpl
	//
	function set_filenames($nom_fichier)
	{
		global $racine;
		$langrac = $racine . 'langues/' . $this->langue_mail . 'mail/';
		if ( !isset($this->type_mail) || $this->not_use_tpl!=FALSE)
		{
		    info($langue['er_titre'], $langue['mail_set_file'], __LINE__, __FILE__);
		}
		if ($this->type_mail)
		{
		    $this->tpl_mail->set_filenames(array('mail' => $langrac . 'html/' . $nom_fichier));
		}
		else
		{
		    $this->tpl_mail->set_filenames(array('mail' => $langrac . 'txt/' . $nom_fichier));
		}
	}

/******************************************************************************
* méthode de la classe
*              mail : - rapide, sans tpl et juste du texte,....
*******************************************************************************/

	//
	// pour envoyer rapidement un mail en mode texte c'est ici
	//
	function envoi_mail_simple($to,$from,$message,$sujet)
	{
		$this->message($message);
		$this->sujet_mail($sujet);
		$this->exp_mail($from);
		$this->dest_mail($to);
		$this->type_mail(false);
		$var = $this->envoi();

		return $var;
	}

/******************************************************************************
* méthode de la classe
*              mail : - général
*******************************************************************************/

	//
	// formate la date
	//
	function formate_date($format = '')
	{
		global $membre, $config;

		if ($format=='')
		{
			if ( isset($membre['membre_date_format']) )
			{
			    $this->date_du_jour_formate = date($membre['membre_date_format'], $this->date_du_jour);
			}
			else
			{
				$this->date_du_jour_formate = date($config['date_format'], $this->date_du_jour);
			}
		}
		else
		{
			$this->date_du_jour_formate = date($format, $this->date_du_jour);
		}
	}

	//
	// definit la langue du mail
	//
	function set_langue($langage = '')
	{
		global $membre, $config;
		if ($langage == '')
		{
			if ( isset($membre['membre_langue']) )
			{
			    $this->langue_mail = $membre['membre_langue'];
			}
			elseif ( isset($config['langue_defaut']) )
			{
				$this->langue_mail = $config['langue_defaut'];
			}
			else
			{
				$this->langue_mail = 'fr/';
			}
		}
		else
		{
			$this->langue_mail = $langage;
		}
	}

/******************************************************************************
* méthode de la classe
*              mail : - expéditeur, récepteur et autres
*******************************************************************************/

	//
	// on donne l'adresse du destinatarie et si on le désire son nom
	//
	function dest_mail($mail_destinataire, $nom_destinataire ='')
	{
		// si le nom du destinataire est défini on lui met son nom sinon on envoi juste l'adresse.
		if( $nom_destinataire == '' )
		{
			$this->destinataire['to'] = trim($mail_destinataire);
		}
		else
		{
			$mail_to = ' <' . trim($mail_destinataire) . '>';
			$nom_to = '"' . trim($nom_destinataire) . '"';
			$mail_dest = $nom_to . $mail_to;
			$this->destinataire['to'] = trim($mail_dest);
		}
	}

	//
	// destinataire du mail en copie séparer par des virgules
	//
	function cc_mail($mail_destinataire, $nom_destinataire ='')
	{
		if (is_array($mail_destinataire))
		{
		    if (is_array($nom_destinataire))
			{
				for($i = 0; $i <= count($mail_destinataire);$i++)
				{
					$mail_cc = ($nom_destinataire[$i] != '') ? ' <' . trim($mail_destinataire[$i]) . '>' : trim($mail_destinataire[$i]);
					$nom_cc = ($nom_destinataire[$i] != '') ? '"' . trim($nom_destinataire[$i]) . '"' : '';
					$mail_dest = $nom_cc . $mail_cc;
					$this->destinataire['cc'][] = trim($mail_dest);
				}
		    }
			else
			{
				for($i = 0; $i <= count($mail_destinataire);$i++)
				{
					$this->destinataire['cc'][] = trim($mail_destinataire[$i]);
				}
			}
		}
		else
		{
			// si le nom du destinataire est défini on lui met son nom sinon on envoi juste l'adresse.
			$mail_cc = ($nom_destinataire != '') ? ' <' . trim($mail_destinataire) . '>' : trim($mail_destinataire);
			$nom_cc = ($nom_destinataire != '') ? '"' . trim($nom_destinataire) . '"' : '';
			$mail_dest = $nom_cc . $mail_cc;
			$this->destinataire['cc'][] = trim($mail_dest);
		}
	}

	//
	// destinataire du mail en copie CACHà‰ séparer par des virgules
	//
	function bcc_mail($mail_destinataire, $nom_destinataire ='')
	{
		if (is_array($mail_destinataire))
		{
		    if (is_array($nom_destinataire))
			{
				for($i = 0; $i <= count($mail_destinataire);$i++)
				{
					$mail_bcc = ($nom_destinataire[$i] != '') ? ' <' . trim($mail_destinataire[$i]) . '>' : trim($mail_destinataire[$i]);
					$nom_bcc = ($nom_destinataire[$i] != '')?'"' . trim($nom_destinataire[$i]) . '"' : '';
					$mail_dest = $nom_bcc . $mail_bcc;
					$this->destinataire['bcc'][] = trim($mail_dest);
				}
		    }
			else
			{
				for($i = 0; $i <= count($mail_destinataire);$i++)
				{
					$this->destinataire['bcc'][] = trim($mail_destinataire[$i]);
				}
			}
		}
		else
		{
			// si le nom du destinataire est défini on lui met son nom sinon on envoi juste l'adresse.
			$mail_bcc = ($nom_destinataire != '') ? ' <' . trim($mail_destinataire) . '>' : trim($mail_destinataire);
			$nom_bcc = ($nom_destinataire != '')?'"' . trim($nom_destinataire) . '"' : '';
			$mail_dest = $nom_bcc . $mail_bcc;
			$this->destinataire['bcc'][] = trim($mail_dest);
		}
	}

	//
	// expéditeur du messsage
	//
	function exp_mail($mail_expediteur, $nom_expediteur ='')
	{
		if ($nom_expediteur == '')
		{
		    $this->expediteur['from'] = trim($mail_expediteur);
		}
		else
		{
			$mail_from = ' <' . trim($mail_expediteur) . '>';
			$nom_from = '"' . trim($nom_expediteur) . '"';
			$mail_exp = $nom_from . $mail_from;
			$this->expediteur['from'] = trim($mail_exp);
		}
	}

	//
	// repondre à 
	//
	function exp_mail_repondre($mail_expediteur_repondre_a, $nom_expediteur_repondre_a = '')
	{
		if ($nom_expediteur_repondre_a == '')
		{
		    $this->expediteur['reply-to'] = trim($mail_expediteur_repondre_a);
		}
		else
		{
			$mail_reply_to = ' <' . trim($mail_expediteur_repondre_a) . '>';
			$nom_reply_to = '"' . trim($nom_expediteur_repondre_a) . '"';
			$mail_exp_rep = $nom_reply_to . $mail_reply_to;
			$this->expediteur['reply-to'] = trim($mail_exp_rep);
		}
	}

/******************************************************************************
* méthode de la classe
*              mail : - spécification du headers
*******************************************************************************/

	//
	// permet l'ajout d'options spécial au headers
	// 
	// ATTENTION bien comprendre les headers pour pouvoir l'utiliser
	// quelques explication suplémentaires là  : http://phpcodeur.net/articles/php/emails
	//
	function headers_mail($type, $headers)
	{
		$this->headers[$type] = trim($headers);
	}

	//
	// definit la priorité du message de 1 à  5
	//
	function priorite_mail($prior)
	{
		$this->headers_mail('X-Priority', $prior);
	}

	//
	// definit l'adresse de retour en cas d'erreur
	//
	function erreur_mail($erreur_mail)
	{
		$this->headers_mail('Return-Path', $erreur_mail);
	}

	//
	// donne le type mime du mail
	//
	function type_mime_mail($type)
	{
		$this->headers_mail('Content-Type', $type);
	}

	//
	// utiliser la notification de mail et donner l'adresse de reception de cette notification
	//
	function notification_mail($maildenotification)
	{
		$this->headers_mail('Disposition-Notification-To', $maildenotification);
	}

	//
	//  définit l'encodage utilisé par le contenu de l'email ou une partie de celui-ci
	//
	function encodage_mail($encodage_mail)
	{
		$this->headers_mail('Content-Transfer-Encoding', $encodage_mail);
	}

/******************************************************************************
* méthode de la classe
*              mail : - messsage, sujet, signature
*******************************************************************************/

	//
	// met le sujet du mail
	//
	function sujet_mail($sujet)
	{
		$this->sujet = trim($sujet);
	}

	//
	// met le message
	//
	function messages($message = '')
	{
		if ( ! isset($this->not_use_tpl) )
		{
		    info($langue['er_titre'], $langue['mail_use_tpl'], __LINE__, __FILE__);
		}
		if (!$this->not_use_tpl)
		{
		    $this->tpl_mail->assign_var_from_handle('mail','mail');
			$this->message = $this->tpl_mail->_tpldata['.'][0]['mail'];
		}
		else
		{
			if ($message != '')
			{
			    $this->message = $message;
			}
			else
			{
				info($langue['er_titre'], $langue['mail_message_vide'], __LINE__, __FILE__);
			}
		}
	}
	//
	// on dfinit la signature si il y as lieu
	//
	function signature($sign)
	{
		if ($this->not_use_tpl)
		{
			$this->signature = $sign;
		}
		else
		{
			$this->dval(array( 'SIGNATURE' => $sign));
		}
	}

/******************************************************************************
* méthode de la classe
*              mail : - envoi du mail....
*******************************************************************************/

	//
	// on envoi l'email avec tout ce qui à  été précédement prédéfinit
	// renvoi true ou false, true -> le mail à  été envoyer, false le mail n'as pas été envoyer.
	//
	function envoi()
	{
		global $racine, $config, $langue;

		$entete = '';
		$entete = 'From: ' . $this->expediteur['from'] . "\n";

	    $entete .= (isset($this->expediteur['reply-to']) && $this->expediteur['reply-to'] != '') ? 'Reply-to: ' . $this->expediteur['reply-to'] . "\n" : '' ;

		if ($this->destinataire['cc'] > 0)
		{
			// on sépare les destinataires par des virgules
			$copie_mail = implode(", ", $this->destinataire['cc']);
		    $entete .= ($copie_mail != '') ? 'Cc: ' . $copie_mail . "\n" : '' ;
		}
		if ($this->destinataire['bcc'] > 0)
		{
			// on sépare les destinataires par des virgules
			$copie_cache_mail = implode(", ", $this->destinataire['bcc']);
			$entete .= ($copie_cache_mail != '') ? 'Bcc: ' . $copie_cache_mail . "\n" : '' ;
		}
		$this->headers['Date'] = $this->date_du_jour_formate;
		$this->headers['X-Mailer'] = 'FSB ' . $langue['FSB_VERSION'];
		$this->headers['X-AntiAbuse']  = 'Sender IP - ' . $_SERVER['REMOTE_ADDR'] . '/Server Name - <' . $_SERVER['SERVER_NAME'] . '>';
		$this->headers['MIME-Version'] = '1.0'; 
		
		// si il n'y as pas de type défii c'est du texte par défaut
		if ( !isset($this->headers['Content-Type']) )
		{
			$this->type_mime_mail('text/plain; charset="' . $langue['charset'] . '"');
		}

		// on met générer le messag_id qui caractérise un message unique....
		$this->headers['Message-ID'] = '<' . md5(uniqid(rand())) . '@' . $config['nom_serveur'] . '>';

		if ($this->headers > 0)
		{
			foreach($this->headers as $key => $value)
			{
				$entete .= $key . ': ' . $value . "\n";
			}
		}

		// pour eviter des bug on enleve tout les retours à  la ligne 
		$dest = str_replace("/\r\n?/", "", $this->destinataire['to']);
		$sujet = str_replace("/\r\n?/", "", $this->sujet);
		if ( $this->not_use_tpl )
		{
			// evite quelque bug et double retour à  la ligne....
			if(!$this->type_mail)
			{
				$msg = str_replace("/\r\n?/", "\n", $this->message);
				if ( isset($this->signature) )
				{
				    $msg = $msg . "\n\n~~~~~~~~~~~~~~~~~~~~\n" . $this->signature;
				}
			}
			else
			{
				$msg = str_replace("/\r\n?/", "<br />", $this->message);
				$msg = str_replace("/\n?/", "<br />", $this->message);
				if ( isset($this->signature) )
				{
				    $msg = $msg . '<br /><br /><hr />' . $this->signature;
				}
			}
		}
		else
		{
			$msg = $this->message;
		}

		$result = @mail($dest, $sujet, $msg, $entete);

		return $result;
	}

/******************************************************************************
* méthode de la classe
*              mail : - tout ce qu'il faut pour remttre tout ou une partie à  0...
*******************************************************************************/

	//
	// remet le tout à  0
	//
	function reset_tout()
	{
		global $config;

		$this->destinataire = array('to' => '', 'cc' => array(), 'bcc' => array());
		$this->expediteur = array('from' => '', 'reply-to' => '');
		$this->date_du_jour = time();
		$this->formate_date($config['date_format']);
		$this->headers = array();
		$this->sujet = '';
		$this->message = '';
		$this->signature = '';
		// par defaut type texte
		$this->type_mail(FALSE);
		$this->set_langue();

		$this->not_use_tpl = TRUE;
	}

// fin de la class
}
?>


voila

normalement pas de bug.....

pour l'utilisation :
// inclure la page
include( $racine . 'includes/class/class_fsb_mail.php' );
// crée la référence vers l'objet
$mail = new fsb_mail();
// on dit qu'on utilise les templates
$mail->use_tpl();
// on choisi la langue
// on est pas obliger de définir la langue si c'est du français...
$mail->set_langue('fr/');
// on choisi mail en html ou en txt
$mail->type_mail(false);
// on définit le fichier utiliser
// il se situe dans langue/fr/mail/txt pour les texte
// il se situe dans langue/fr/mail/html pour les templates html
$mail->set_filenames('mail.tpl');
// on envoi les valeur à  mettre
$mail->dval(array('MESSAGE' => 'fdfdglfd ksdf ksdg sdkg jsd'));
// on compile
$mail->messages();
// on définit le sujet
$mail->sujet_mail(' j\'ai pas de sujet ');
// on définit l'expéditeur (from)
$mail->exp_mail('my@moi.com');
// on définit le receveur du mail (to)
$mail->dest_mail('you@toi.com');
// on définit la signature, si on veux...
$mail->signature('ma sign');
// on définit les copie  du mail à  envoyer
// soit un tableau soit personne par personne
$mail->cc_mail(array(0 =>'bcc@domaine.com', 1 => 'bcc2@domaine.com'),array(0=>'', 1 => 'jeroen'));
// on définit les copie caché à  envoyé
// soit ersonne apr personne soit par tableau
$mail->bcc_mail('bcc2@domaine.com', 'jeroen' );
// on envoi le mail
if (!$mail->envoi())
{
	info($langue['er_titre'], $langue['mail_message_pas_envoyer'], __LINE__, __FILE__);
};


"La gravité est le bonheur des imbéciles" Charles de Montesquieu > "T'as raison, L'apesanteur c'est plus rigolo" Hébus de Phalompe (Troll de Troy)
http://www.grummfy.com/download/crea/smileys/fsb2.gif Mods fsb1 - Mods fsb2 - Mon forum - Grummfy's project
 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14359
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 11 Novembre 2004, 19:10
Oki je m'occupe de tout ca et je l'implemente à la rc2 dès que j'en ai fini avec FastModule.

j'adore cette clé de langue:
$langue['mail_type'] = 'Le type de mail est soit vrai soit faux, vous avez du vous tromper';

:lol:


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Equipe des MODS
Avatar de Grummfy
  • Age : 23 ans
  • Messages : 5428
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 11 Novembre 2004, 19:47
ben je savait pas quoi mettre alors.....


"La gravité est le bonheur des imbéciles" Charles de Montesquieu > "T'as raison, L'apesanteur c'est plus rigolo" Hébus de Phalompe (Troll de Troy)
http://www.grummfy.com/download/crea/smileys/fsb2.gif Mods fsb1 - Mods fsb2 - Mon forum - Grummfy's project
 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14359
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 14 Novembre 2004, 14:46
Bon comme dit j'ai pas mal modifié de choses dedans, j'ai optimisé davnatage le code et rassembler certaines focntions pour éviter qu'on est une pile de 10 fonctions a se taper à chaque mail. Il ne me reste plus qu'a l'implementer et à tester maintenant, merci pour ton boulot grummfy :D


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Equipe des MODS
Avatar de Grummfy
  • Age : 23 ans
  • Messages : 5428
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 14 Novembre 2004, 15:53
oublie pas que j'ai séparer certains trucs pour pouvoir les utiliser séparément pour certaines options donc fait attention en regroupant que cela reste pratique....

enfin curieux de voir cela....


"La gravité est le bonheur des imbéciles" Charles de Montesquieu > "T'as raison, L'apesanteur c'est plus rigolo" Hébus de Phalompe (Troll de Troy)
http://www.grummfy.com/download/crea/smileys/fsb2.gif Mods fsb1 - Mods fsb2 - Mon forum - Grummfy's project
 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14359
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 14 Novembre 2004, 15:55
J'ai supprimé les barres de séparation, elle ssont pas spécialement utiles je trouve dans la mesure ou un gars qui va ouvrir le fichier pour comprendre comment ca amrche va directement comprendre, c'est pas spécialement compliqué :)


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Equipe des MODS
Avatar de Grummfy
  • Age : 23 ans
  • Messages : 5428
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 14 Novembre 2004, 22:48
oki, moi je trouve cela plus facile à lire mais bon....


"La gravité est le bonheur des imbéciles" Charles de Montesquieu > "T'as raison, L'apesanteur c'est plus rigolo" Hébus de Phalompe (Troll de Troy)
http://www.grummfy.com/download/crea/smileys/fsb2.gif Mods fsb1 - Mods fsb2 - Mon forum - Grummfy's project
 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14359
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 16 Novembre 2004, 19:42
Hmm j'ai un problème assez chiant avec l'envoie de mail, le client mail qui recoit le mail refuse de faire des retours je ne comprend pas pourquoi. je fonctionne avec les templates de smails, j'ai testé avec un nl2br() et il affiche corectement les \n alors que le client mail ne veut pas ^^"
J'ai même essayer de mettre des <br /> a la palce et il ne les interprete pas non plus O_o.


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Etoile
Avatar de Ghost Warrior
  • Age : 23 ans
  • Messages : 3535
  • Inscrit : 14 Novembre 2004
  Lien vers ce message 25 Novembre 2004, 20:25
Salut,

Comme qu'a dit Dark, il a modifié pas mal de chose dedans, ce sera sympa qu'il nous donne le code complet...

Pourquoi car j'ai envie d'installer aussità´t... :O

:=$


L'amour est aveugle, il faut donc toucher.

La mort est un état de non-existence. Ce qui n'est pas n'existe pas. Donc la mort n'existe pas.

Comment le vent sait-il dans quelle direction il doit souffler ?
 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14359
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 25 Novembre 2004, 20:26
Bah c'est bon l'envoie de mails avec les fichiers .tpl est implémenté pour la RC2, me reste plus que deux trois trucs à modifier et a tester tous...


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Répondre


.