<?php
# -------------------------------------------------------------------- #
# Classe email v1 #
# Pour envoyer des mails #
# -------------------------------------------------------------------- #
# Par MiK - pasavalle@ifrance.com #
# -------------------------------------------------------------------- #
# Utilisation: #
# $mail = new email( #
# "Sujet", "Message", "Nom de l'expéditeur", "Email expediteur" #
# Array pour, Array copies, Array copies cachés, "Email reponse"); #
# $mail->env(); #
# -------------------------------------------------------------------- #
# Afin d'éviter de déclarer la classe deux fois, on ne la déclare que si
# la constante 'MAIL_CLASS_DEFINED' n'est pas definie.
if ( ! defined( 'MAIL_CLASS_DEFINED' ) ) {
define( 'MAIL_CLASS_DEFINED', 1 );
# Definition de la classe
class email {
# On declare les variables de cette classe
var $de;
var $replyTo;
var $sujet;
var $message;
var $pour;
var $cc;
var $bcc;
var $headers;
# Puis les fonctions, dont le constructeur :
function email( $sujet, $message, $deNom, $deMail, $pour, $ccList=0,
$bccList=0, $replyTo=0) {
# On affecte une valeur aux variables de la classe avec $this
$this->de = $deNom . " <$deMail>";
$this->replyTo = $replyTo;
$this->sujet = $sujet;
$this->message = $message;
# Si $Pour comporte plusieurs destinataires, on les met bout à bout
# en les séparant par ","
# Ex : array("Email1","Email2","Email3") donne
# "Email1,Email2,Email3"
# Sinon on met juste le nom du seul destinataire
if (is_array($pour)) {
$this->pour = join($pour, "," );
} else {
$this->pour = $pour;
}
# Pareil pour les copies
if (is_array($ccList) && sizeof($ccList)) {
$this->cc = join( $ccList, "," );
} elseif ($ccList) {
$this->cc = $ccList;
}
# Pareil pour les copies cachés
if (is_array($bccList) && sizeof($bccList)) {
$this->bcc = join( $bccList, "," );
} elseif ( $bccList ) {
$this->bcc = $bccList;
}
}
# Cette fonction envoie simplement le mail via la fonction mail() de
# PHP. Mais on aurait pu ajouter des fonctions en plus du type: envoi
# via les SOCKETS ou Verification des emails
function env() {
# On forme la tête de message avec les variables de la classe
# Expéditeur : Nom et email (voir le constructeur)
$this->headers = "From: " . $this->de . "\n";
# Adresse de réponse
if ($this->replyTo) {
$this->headers .= "Reply-To: " . $this->replyTo . "\n";
}
# Copies
if ($this->cc) {
$this->headers .= "Cc: " . $this->cc . "\n";
}
# Copies Cachés
if ($this->bcc) {
$this->headers .= "Bcc: " . $this->bcc . "\n";
}
# Envoi du mail
# On aurait pu se passer du return et ecrire juste mail(...) mais le
# return renvoie le resultat de la fonction mail() ce qui
# permet de tester si le mail a bien été envoyé
return mail($this->to,$this->subject,$this->message,$this->headers);
}
}
# Fin de la classe
}
# Fin du IF permettant d'éviter les erreurs de déclaration
# (C'est à dire de déclarer deux classes ou plus portant le même nom.)
# -------------------------------------------------------------------- #
# - Exemple d'envoi de mail - #
# -------------------------------------------------------------------- #
$msg = "Bonjour Alex, comment vas-tu ?\n";
$msg .= "Ca fait longtemps que je n'ai pas reçu de nouvelles de toi.\n";
$msg .= "Tu passes toujours tes journées à jouer à Age of Empires ?\n";
$msg .= "\n";
$msg .= "A bientôt,\n";
$msg .= "Pierre";
$exp = array( "pasavalle@ifrance.com");
$m = new email("Que deviens-tu ?", $msg, "Pierre",
"pasavalle@ifrance.com", $exp);
$env = $m->env();
if (!$env)
echo "L'envoi a échoué !";
else
echo "Message envoyé !";
# Les paramètres optionels ne sont pas utilisés. (Copies, Copies
# cachées, Adresse de reponse)
?>
|
|