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 = '';
}
}
?>