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; ?>