Envoyer un mail HTML avec PHP

Email & PHP

La fonction mail() de PHP permet l’envoi de mail en utilisant le serveur SMTP par défaut (celui définit dans le php.ini).

Cette fonction reçoit 4 paramètres :

  • L’adresse mail du destinataire (séparée par des ; pour spécifier plusieurs adresses)
  • L’objet du mail
  • le message en lui même
  • un header (facultatif)

Le header permet de préciser certaines valeurs, comme l’adresse expéditeur par exemple. Voici un exemple complet avec en bonus un mail HTML qui utilise une syntaxe un peu spéciale nommée : HEREDOC (voir ici). Cette syntaxe permet d’écrire le code HTML du mail ‘en ligne’, de plus il est possible d’insérer des variables PHP à l’intérieur.

// construction header
$headers = 'From: '.$adresseMailExpediteur."\r\n";
$headers .= 'Bcc: '.$adresseEmailEnBCC."\r\n"; // facultatif
$headers .= "X-Mailer: php\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";

// objet du mail
$subject = 'Objet du mail';

// destinataire
$dest = "darkvador@etoile-noire.org"; //:)

// variables pour le texte du mail
$code = 'X12-R456' ;
$designation = 'Test mail PHP';

// code du mail au format HEREDOC avec $code et $designation
$message = <<<MESSAGE
<html>
 <head><title></title></head>
 <body bgcolor="#DCEEFC">
   <p> Nouveau mail : </p>
   <br>
   <p>Code : $code</p>
   <p>Désignation : $designation</p>
 </body>
</html>
MESSAGE;

// NB le tag MESSAGE doit impérativement débuter la ligne 
// (sans espace devant) sinon la fonction HEREDOC ne fonctionne pas.

// envoie du mail
if( !mail($dest, $subject, $message, $headers) ) {
   // Erreur d'envoi du mail
}

Pour finir il faut noter que si vous ne fournissez pas d’adresse expéditeur dans le header, PHP utilise une adresse par défaut. En général : www-data@nomDuServeur. Cela peut poser problème avec certains antispam et logiciels de messagerie.

Pas de Commentaire

Qu'en pensez-vous ?

Votre formulaire contient des erreurs, merci de corriger.