Envoyer un mail avec PHP

E

Bonjour, aujourd’hui dans ce billet, nous verrons comment envoyer un mail (Format Texte et HTML) avec la fonction mail() de PHP.

Avant tout, il faut noter que cette méthode a plusieurs inconvénients :

  • Peut être accusée de faciliter le “spamming”
  • Envoyer plusieurs mails stockés dans une base de données peut réduire considérablement les ressources du serveur

Trêve de bavardage jetons-nous dans le vif du sujet.

Vous pouvez envoyer vos mails soit au format Texte soit au format HTML. La différence se situe au niveau du format HTML dans lequel vous pouvez insérer des images, des liens hypertextes, des vidéos, des tableaux et bien d’autres.

De manière générale, un mail possède des en-têtes contenant les informations sur la personne qui envoie, l’encodage du mail et l’adresse mail à qui faut répondre.

Syntaxe :

mail(to, subject, message, header)
Mail au format Texte
<?php
// Ici le sujet de votre mail.
$_sujet = "Mon super sujet !";

// Ici le message à envoyer par mail.
$_message = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat.";

// Adresse mail du destinataire du message
$_destinataire = 'destinataire@domaine.ltd';

// En-têtes du message.
$_headers = "From: \"Nom de l'expediteur\"<mail@domaine.ltd>\n";
$_headers .= "Reply-To: mail@domaine.ltd\n";
$_headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"";

// Envoie du mail
$_sendMail = mail($_destinataire, $_sujet, $_message, $_headers);

// On teste si le mail a été envoyé ou non
if($_sendMail) {
	echo "Email envoyé avec succès.";
}
else {
	echo "Une erreur est survenue lors de l'envoi de votre message.";
}
?>

décortiquons ce bout de code :

L’entête From fait référence à l’expéditeur du message, Reply-To l’adresse mail pour la réponse et Content-Type précise le type d’email (texte ou html) et l’encodage des caractères.

Maintenant, voyons comment envoyer un mail au format HTML. Pour cette partie, j’ai récupéré le code source d’un template de mail HTML chez Webdesign Web que vous pouvez télécharger ici  et inclure dans votre code source.

Mail au format HTML
<?php

/**
* Pour des questions de lisibilité, j'ai crée un fichier templateMail.php dans lequel j'ai mis tout mon code HTML dans la variable $_contentTemplate.
* Ici, j'inclus ce fichier dans mon script d'envoi de mail
*/
include 'templateMail.php';
// Ici le sujet de votre mail.
$_sujet = "Mon super sujet !";

// Ici le message à envoyer par mail au format HTML (on voit bien les balises HTML si on fait un echo sur $_contentTemplate :)).
$_message = $_contentTemplate;

// En-têtes du message.
$_destinataire = 'destinataire@domaine.ltd';
$_headers = "From: \"Nom de l'expediteur\"<mail@domaine.ltd>\n";
$_headers .= "Reply-To: mail@domaine.ltd\n";
$_headers .= "Content-Type: text/html; charset=\"iso-8859-1\"";

// Envoie du mail
$_sendMail = mail($_destinataire, $_sujet, $_message, $_headers);

// On teste si le mail a été envoyé ou non
if($_sendMail) {
	echo "Email envoyé avec succès.";
}
else {
	echo "Une erreur est survenue lors de l'envoi de votre message.";
}
?>

Super voilà qui est bien, qui fini bien. C’est ici que notre voyage dans la fonction mail() de PHP prend fin.

Aussi ce qu’il faut retenir c’est que cette méthode, n’est pas la seul encore moins la plus appropriée pour l’envoi de vos mail avec PHP. Dans un prochain billet, nous verrons comment le faire en utilisant un Serveur SMTP avec la librairie PHPMailer.

D’ici là portez vous bien 🙂

A propos de l'auteur

François KOBON

Trois mots pour me décrire : Code - Build - Hack. Je réponds au nom de François KOBON. Partisan passionné de technologies/innovations libre et ouverte, d'Algorithme, de Datas, des Mathématiques, tous types de sciences... et surtout d'apprentissage non conventionnel parce je suis auto-didacte. Je suis membre de la communauté Ayiyikoh que vous pouvez retrouver en ligne sur ayiyikoh.org

2 commentaires

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

  • salut excusez moi j’aimerais avoir plus d’explication sur ce tutoriel. En effet j’ai conçu un formulaire de contact avec du HTML et j’aimerais que lorsque l’internaute fini de remplir le formulaire je puisse recevoir toute les informations sur mon adresse mail s’il vous plait pouviez-vous m’aidez?
    Cordialement, Merci de me répondre.

Par François KOBON

François KOBON

Trois mots pour me décrire : Code - Build - Hack. Je réponds au nom de François KOBON. Partisan passionné de technologies/innovations libre et ouverte, d'Algorithme, de Datas, des Mathématiques, tous types de sciences... et surtout d'apprentissage non conventionnel parce je suis auto-didacte. Je suis membre de la communauté Ayiyikoh que vous pouvez retrouver en ligne sur ayiyikoh.org

Suivez-moi

Insert math as
Block
Inline
Additional settings
Formula color
Text color
#333333
Type math using LaTeX
Preview
\({}\)
Nothing to preview
Insert