
La fonction mail est très souvent utilisé sur un site pour des newsletters ou des confirmations d’inscription par exemple. Il se peut que l’on soit amené à l’utiliser relativement souvent lorsque que l’on développe une application web, c’est pourquoi plutôt que de récrire sans cesse le même code, il est préférable d’utiliser une librairie (on perd moins de temps du coup) ! D’autant plus qu’il faut respecter certains paramètres afin que les mails envoyés soient correctement formatés et qu’ils ne tombent pas directement dans le panier “Spams” des webmails.
Ce qu’il faut savoir, c’est qu’un email, c’est structuré. Et pour vous montrer visuellement ce que ça donne, je vous ai fait un petit schéma aux couleurs sympas!

Les deux premières parties sont obligatoires. On verra la prochaine fois que la partie texte peut être modulable. Je vais donc vous détailler dans ce billet comment faire la première partie : les entêtes
Avant de commencer, j’aimerais revenir sur ce qu’est une librairie et une classe. Ces deux notions sont relativement proche et font référence à la conception d’une application. En effet, plutôt que de taper un code plusieurs fois (ce qui serait une perte de temps et de place, on alourdit l’application) on va le taper une fois puis le rappeler à chaque fois que l’on a besoin. Vous allez me dire mais quelle est la différence entre classe et librairie? Et bien tout simplement, la librairie est quelque chose de générique n’ayant aucune dépendance extérieur à ses fichiers contrairement à la classe qui elle peut en contenir. Je parle de dépendance par rapport à l’application. Concrètement, cela se code de la même manière à ceci près que vous pourrez ajouter une librairie sans problème sur votre site alors qu’une classe et en générale définie pour une application, comme un plugin pour une plateforme de blog.
Pour reprendre sur le sujet qui nous intéresse, Il faut déjà qu’on commence par créer l’objet mail :
-
/**
-
* Fonction mail
-
*
-
* Construit l’objet mail
-
*/
-
-
$this->to = ”;
-
$this->from = ”;
-
$this->replyto = ”;
-
$this->name = ”;
-
$this->date = ”;
-
$this->subject = ”;
-
$this->message = ”;
-
$this->html = false;
-
$this->utf8 = false;
-
$this->template = ”;
-
$this->tboundary = $this->boundary.‘_text’;
-
-
}
-
-
}
Puis on va rajouter à cette class
mail une fonction pour renvoyer la première partie : le header
:
-
/**
-
* Fonction GetHeaders
-
*
-
* Génère le code pour les headers du mail à envoyer
-
*/
-
function GetHeaders(){
-
-
$eol = $GLOBALS[‘eol’];
-
// Personnaliser l’expéditeur si un nom a été précisé
-
$res = ‘From: ‘.$ExpMail.$eol.
-
// Précise à quelle adresse il faudra répondre (si elle est précisée)
-
// Change la date d’envoi
-
‘Return-Path: ‘.$ExpMail.‘>’.$eol.
-
‘MIME-Version: 1.0′.$eol.
-
// Précise d’où le mail vient. Très important pour les anti-spams
-
‘X-Sender: ‘.$eol.
-
// Programme qui envoi le mail. Ici, c’est PHP
-
‘X-auth-smtp-user: ‘.$this->from.‘ ‘.$eol.
-
‘X-abuse-contact: ‘.$this->from.‘ ‘.$eol.
-
‘Content-Type: multipart/mixed; boundary="’.$this->boundary.‘"’.$eol;
-
-
return $res;
-
-
}
On va aussi construire la fonction pour envoyer le mail entier :
-
/**
-
* Fonction Send
-
*
-
* Envoie le mail
-
*/
-
function Send(){
-
-
$GLOBALS[‘eol’] = "\r\n";
-
$headers = $this->GetHeaders();
-
$msg = $this->BuildMessage();
-
-
else return false;
-
-
}
Il suffit alors de créer l’objet $mail
et de lui passer certains arguments en fonction de ce dont on a besoin, par exemple :
-
// On crée l’objet mail
-
// Adresse email de réception
-
$mail->to = ‘destinataire@email.com’;
-
// Adresse email de l’expéditeur
-
$mail->from = ‘expéditeur@email.cm’;
-
// Nom complet de l’expéditeur
-
$mail->name = ‘Tomtom’;
-
// Adresse de réponse
-
$mail->replyto = ‘expéditeur@email.cm’;
-
// Date d’envoi que l’on peut modifier
-
$mail->date = ‘Mon, 15 Oct 2007 17:43:37 +0200′;
-
…
-
…
-
-
// Pour envoyer le mail, on utilisera la fonction send()
Ces bouts de code sont donc là pour commencer. La prochaine fois, je ferais la partie 2, le texte de l’email
où je vous montrerai comment envoyer un email en texte + html, en choisissant l’encodage ou encore en utilisant un template. A la fin de cette série, je vous donnerai aussi la librairie mail pour que tout le monde puisse l’utiliser.
En attendant, j’espère ce billet vous à plus!





Il me semble qu’il faudrait quand même déclarer tes variables dans la class avant de les utiliser…
De plus, le constructeur, en php 5, n’est pas le nom de la class mais __construct(), non ? A moins que l’on puisse encore utiliser le nom de class ?
Sinon, qu’est-ce que la variable globale eol ?