Envoyer un courrier électronique
Vue d’ensemble
Un site interactif a souvent besoin d’envoyer des messages électroniques aux utilisateurs, par exemple pour confirmer un achat, une inscription ou envoyer une lettre d’information.
La fonction mail, proposée par PHP, permet de répondre simplement à ce genre de besoin. Cette fonction est détaillée dans ce chapitre, d’abord, pour envoyer des messages textes (sans pièce jointe), puis pour envoyer des messages au format MIME (Multipurpose Internet Mail Extensions).
En complément, PHP propose une bibliothèque puissante, mais plus complexe d’utilisation, pour gérer des messages selon le protocole IMAP (Internet Message Access Protocol). Cette bibliothèque ne sera pas abordée dans cet ouvrage car elle n’est pas indispensable pour répondre au besoin évoqué précédemment.
Envoyer un message texte sans pièce jointe
La fonction mail permet d’envoyer un message électronique.
Syntaxe
booleen mail(chaîne destinataire, chaîne objet, chaîne message
[, mixte entête])
destinataire |
Adresse e-mail du destinataire. Des destinataires multiples peuvent être indiqués en les séparant par des virgules. |
objet |
Objet du message. |
message |
Texte du message. |
entête |
En-têtes supplémentaires, sous la forme d’une chaîne de caractères ou d’un tableau. |
La fonction mail envoie le message caractérisé par les différents paramètres à un serveur de messagerie défini par les directives de configuration suivantes :
Win32 |
SMTP |
Adresse du serveur SMTP (Simple Mail Transfer Protocol) auquel envoyer le message. Exemple : smtp.orange.fr |
sendmail_from |
Adresse e-mail de l’émetteur. Exemple : webmaster@monsite.com Cette directive doit être présente, même vide. |
|
Unix |
sendmail_path |
Chemin d’accès vers l’exécutable du serveur de messagerie (peut comprendre des paramètres). Exemple : sendmail -t -i |
La fonction mail retourne TRUE si le message a pu être envoyé au serveur (ce qui ne garantit pas que ce dernier a pu l’envoyer avec succès) et FALSE dans le cas contraire. Il n’y a aucun moyen de savoir si le message a été envoyé avec succès ; cette vérification doit être réalisée en dehors de PHP.
Le quatrième paramètre permet de spécifier des informations supplémentaires qui sont envoyées dans l’en-tête...
Envoyer un message au format MIME
1. Préambule
Dans cette partie, nous allons étudier comment envoyer des messages au format MIME ou plus généralement au format Multipart MIME.
Le format MIME permet d’envoyer un message ayant un autre format que du texte : format HTML, image...
Le format Multipart MIME permet d’envoyer un message composé de plusieurs parties ayant chacune un format différent (du texte plus une image, par exemple), une des "parties" pouvant être une pièce jointe.
L’objectif de ce point, sans rentrer dans le détail du format MIME (les amateurs peuvent se pencher sur les nombreuses RFC qui traitent du sujet), est de montrer concrètement comment procéder sur deux cas typiques, l’envoi d’un message au format HTML et l’envoi d’un message avec une pièce jointe.
2. Message au format HTML
Le cas de l’envoi d’un message au format HTML permet d’illustrer l’utilisation du format MIME simple.
Exemple (source d’un message MIME au format HTML)
From: "Olivier" <olivier@diane.com>
To: "Xavier" <xavier@zeus.fr>
Subject: Bonjour !
Date: Mon, 10 Sep 2001 09:24:13 -0100
Message-ID: <3b9c6a403d9f000b@hermes.diane.com>
MIME-Version: 1.0
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 8bit
<html>
<head><title>Bonjour !</title></head>
<body>
<font color="green">Bonjour !</font>
</body>
</html>
Un message MIME simple comprend d’abord les en-têtes standards d’un message, puis, trois lignes d’en-têtes supplémentaires (en gras) indiquant que le message est au format MIME, et enfin, le corps du message proprement dit.
Les trois lignes d’en-têtes supplémentaires sont les suivantes :
MIME-Version |
Indique que le message est au format MIME et précise la version. |
Content-Type |
Indique le type MIME du contenu. |
Content-Transfer-Encoding |
Indique le type d’encodage. |
Quelques types MIME usuels :
text/plain |
Texte simple. Le jeu de caractères utilisé peut être spécifié par l’option charset (par exemple iso-8859-1 ou UTF-8). |
text/html |
Document au format HTML. Le jeu de caractères utilisé... |
Exercice 15 : envoyer un courrier électronique
Dans cet exercice, nous allons créer un formulaire permettant d’envoyer un message électronique.
Indications :
-
Dans un nouveau répertoire, créez un nouveau script PHP mail.php.
-
Dans ce nouveau script, saisissez le code HTML permettant d’afficher une page HTML intitulée « Nouveau message » contenant un formulaire ayant l’allure suivante :
-
Les champs « A », « De » et « Objet » sont de type texte, de taille 40, et s’appellent respectivement a, de et objet (attribut name). Le champ « Texte » est de type texte multilignes, de taille 20 lignes par 80 colonnes, et s’appelle texte (attribut name). Le bouton « Envoyer » s’appelle ok (attribut name). L’alignement des champs est obtenu grâce à l’utilisation de code CSS appliqué à des balises <label> (le design du formulaire est secondaire pour la réalisation de cet exercice).
-
Ce formulaire sera traité par le script PHP mail.php lui-même.
-
Au début du script, insérez une section de code PHP qui teste si le script est appelé en traitement du formulaire ; si c’est le cas :
-
récupérez le contenu des champs dans des variables ;
-
définissez une variable...