PHP permet d'envoyer des emails en utilisant la fonction mail().
Vous trouverez ci-dessous des exemples PHP permettant d'envoyer un mail en format texte (sans mises en forme) et en format HTML.
Attention : des hébergeurs gratuits peuvent désactiver cette fonction pour éviter l'envoi automatique de spam.
Pour envoyer un mail texte simple, il faut utiliser la syntaxe suivante :
mail("destinataire@fai.fr","sujet", "message" [, entêtes]);
Les entêtes (headers) permettent de personnaliser le mail que vous allez envoyer :
Exemple(s)
<?php
$vbOk=false;
$from = "expediteur@fai.fr";
$replyTo = "expediteur@fai.fr";
$to = "destinataire@fai.fr";
$cc = "copie1@fai.fr, copie2@fai.fr";
$rn = "n";
$sujet = "Test";
$message = "Ceci est un message de test";
$headers = "From: ".$from.$rn;
$headers .= "Reply-to: ".$replyTo.$rn;
$headers .= "Cc: ".$cc.$rn;
if(mail($to, $sujet, $message, $headers))
$vbOk=true;
?>
Pour envoyer un mail HTML et texte, il faut modifier l'entête Content-Type :
Content-Type: multipart/alternative; boundary="$delimitation"
Le changement de Content-Type en multipart/alternative permet de séparer le mail en plusieurs parties et l'utilisation de boundary indique la limite de séparation.
Exemple(s)
<?php
$vbOk=false;
$from = "expediteur@fai.fr";
$replyTo = "expediteur@fai.fr";
$to = "destinataire@fai.fr";
$sujet = "Test";
$delimitation = uniqid();
$rn = "n";
$headers = 'From: '.$from.$rn;
$headers .= 'Reply-to: '.$replyTo.$rn;
$headers .= 'Content-Type: multipart/alternative;'.$rn.' boundary="'.$delimitation.'"'.$rn.$rn;
$message = "";
$message .= "--".$delimitation.$rn;
$message .= "Content-Type: text/plain; charset=utf-8".$rn;
$message .= "Content-Transfer-Encoding: 8bit".$rn.$rn;
$message .= "Ceci est un message de test";
$message .= $rn.$rn."--".$delimitation.$rn;
$message .= "Content-Type: text/html; charset=utf-8".$rn;
$message .= "Content-Transfer-Encoding: 8bit;".$rn.$rn;
$message .= "Ceci est un <i>message de test</i> en <strong>HTML</strong>";
$message .= $rn."--".$delimitation."--";
if(mail($to, $sujet, $message, $headers))
$vbOk=true;
?>
Articles susceptibles de vous intéresser