Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Formations en ligne à Excel, Word, Office, Teams... Formez-vous en toute autonomie. Je les découvre !
  1. Livres et vidéos
  2. PHP 8
  3. Envoyer un courrier électronique
Extrait - PHP 8 Développez un site web dynamique et interactif (2e édition)
Extraits du livre
PHP 8 Développez un site web dynamique et interactif (2e édition) Revenir à la page d'achat du livre

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 :

images/09RI01N.png
  • 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...