L’envoi de messages électroniques est très courant pour une application Web, par exemple, l’envoi d’un courriel de bienvenue lorsqu’un utilisateur crée un compte sur votre site Web, l’envoi de bulletins d’information à vos utilisateurs enregistrés, ou le simple formulaire de contact du site Web, et ainsi de suite.
Vous pouvez utiliser la fonction PHP intégrée mail() pour créer et envoyer des messages électroniques à un ou plusieurs destinataires dynamiquement à partir de votre application PHP, soit en texte clair, soit en HTML formaté. La syntaxe de base de cette fonction peut être donnée avec :
mail(to, subject, message, headers, parameters)
Le tableau suivant résume les paramètres de cette fonction :
Paramètres | Descriptions |
---|---|
to | L’adresse e-mail du destinataire. |
subject | Sujet de l’email à envoyer. |
message | Définit le message à envoyer. Chaque ligne doit être séparée par un saut de ligne-LF (n). Les lignes ne doivent pas dépasser 70 caractères. |
headers (optionel) | Ceci est typiquement utilisé pour ajouter des en-têtes supplémentaires tels que « From », « Cc », « Cc », « Bcc ». Les en-têtes supplémentaires devraient être séparés par un retour chariot plus un saut de ligne-CRLF (rn). |
parameters (optionel) | Utilisé pour passer des paramètres supplémentaires. |
Envoi d’emails en texte brut
La façon la plus simple d’envoyer un email avec PHP est d’envoyer un email en texte brut. Dans l’exemple ci-dessous, nous déclarons d’abord les variables, l’adresse email du destinataire, la ligne objet et le corps du message puis nous passons ces variables à la fonction mail()
pour l’envoyer.
<?php
$to = 'johndoe@email.com';
$subject="Lorem Ipsum";
$message="Hi, Lorem Ipsum?";
$from = 'toto@email.com';
// Envoi d'email
if(mail($to, $subject, $message)){
echo 'Votre message a été envoyé avec succès!';
} else{
echo 'Impossible d'envoyer des emails. Veuillez réessayer.';
}
?>
Envoi d’emails au format HTML
Lorsque vous envoyez un message texte en PHP, tout le contenu sera traité comme du texte simple. Nous allons améliorer ce résultat et transformer l’e-mail en un e-mail au format HTML.
Pour envoyer un courriel HTML, le processus sera le même. Cependant, cette fois, nous devons fournir des en-têtes supplémentaires ainsi qu’un message au format HTML.
<?php
$to = 'johndoe@email.com';
$subject="Lorem Ipsum";
$from = 'toto@email.com';
// Pour envoyer du courrier HTML, l'en-tête Content-type doit être défini.
$headers="MIME-Version: 1.0" . "rn";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "rn";
// Créer les en-têtes de courriel
$headers .= 'From: '.$from."rn".
'Reply-To: '.$from."rn" .
'X-Mailer: PHP/' . phpversion();
// Composer un simple message électronique HTML
$message="<html><body>";
$message .= '<h1>Salut John!</h1>';
$message .= '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin efficitur, velit quis eleifend fringilla, urna lectus finibus est, ut aliquam nulla tellus vel ipsum. Pellentesque in vulputate leo, sit amet mattis sem. Sed id gravida turpis, et luctus augue. Ut vitae ipsum volutpat, cursus dui sit amet, egestas mi. Etiam bibendum, dolor in sollicitudin facilisis, diam odio ultricies ligula, sit amet rutrum diam justo at eros. Nam mollis efficitur vestibulum. Aenean mi enim, tempus et ornare et, convallis vitae odio. Aliquam tincidunt, massa hendrerit volutpat faucibus, nulla erat lobortis nulla, vitae egestas lectus est sit amet nibh. Ut pretium ligula non risus sollicitudin, porta laoreet sem viverra. Praesent vulputate purus massa, vitae luctus nunc rutrum quis. Vestibulum dignissim semper urna, in rhoncus tortor. Quisque volutpat massa nisl, sit amet elementum nibh lobortis id. Vestibulum mollis leo ex, non aliquam risus lobortis a.</p>';
$message .= '</body></html>';
// Envoi d'email
if(mail($to, $subject, $message, $headers)){
echo 'Votre message a été envoyé avec succès.';
} else{
echo 'Impossible d'envoyer des courriels. Veuillez réessayer.';
}
?>
À savoir : La fonction PHP
mail()
fait partie du noyau PHP mais vous devez configurer un serveur de messagerie sur votre machine/serveur pour qu’il fonctionne vraiment.