L'envoi de courriel en PHP

L'envoi de courriel ou e-mail en PHP

Théorie

L'envoi d'un courriel par PHP est une fonction très simple à mettre en oeuvre.

La petite difficulté se présentera au niveau de la construction du corps du message. Dans le cadre de l'exercice final du chapitre suivant, ce message consistera en un résumé de l'ensemble du formulaire complété par le visiteur du site.

Cette fonction PHP mail se présente comme suit:

mail (destinataire, sujet, corps, en-têtes supplémentaires);

Concernant les 4 arguments de cette fonction, nous pouvons dire ceci:

  1. destinataire est soit une variable contenant l'adresse du destinataire, soit directement l'adresse du destinataire entre guillemets ou apostrophes;
  2. sujet est soit une variable contenant le sujet, soit directement le sujet noté entre guillemets ou apostrophes;
  3. Idem pour le corps du message. Dans notre cas, ce sera une variable dont le contenu aura été constitué par la concaténation de contenus de plusieurs variables entrecoupés de chaînes de caractères;
  4. Il est également possible d'ajouter une ou des en-têtes particulières; elle doivent être séparées par des "\n" qui définissent un passage à la ligne en PHP.

Petit exemple

Voici un exemple de la façon dont un formulaire peut être traité.

Le début du script enregistre la date et l'heure du serveur et les traite afin de les présenter sous la forme jj/mm/aaaa (jour, mois, année) et hh:mm (heure, minutes).

Ensuite, tous les contenus des variables sont concaténés, entrecoupés de texte afin de comprendre de quoi il s'agit.

Voilà ce que peut donner l'envoi d'un courriel basé sur le remplissage d'un formulaire simple contenant exculsivement le prénom et le nom du visiteur et ceci sans aucune vérification.

Rappelons que

  • le "." est l'opérateur de concaténation;
  • "\n" est la commande le passage à la ligne en PHP;
  • "//" permet de placer une ligne de commentaire, en vert dans l'exercice;
  • Le ".=" permet d'ajouter une chaîne de caractères après le contenu de la variable.

<?php
    // Enregistrement de la date et l'heure du serveur grâce à la fonction getDate();
    $current_date = getDate();
    // Prélèvement de la valeur des minutes
    $les_minutes = $current_date["minutes"];
    // Si les minutes ne font qu'un rang, on concatène un 0 devant
    if (strlen($les_minutes) == 1)
        $les_minutes = "0" . $les_minutes;
    // Formattage de la date dans une variable, séparation par des barres obliques (slashs)
    $date_act = $current_date["mday"] . "/" . $current_date["mon"] . "/" . $current_date["year"];
    // Formattage de l'heure dans une variable, séparation par 'h'
    $heure_act= $current_date["hours"] . "h" . $les_minutes;
    // On commence à remplir la variable $message avec son contenu
    $message = "Date : " . $date_act . " Heure : " . $heure_act;
    // On continue à compléter le message dans la variable $message
    $message .= "\n====================\nFormulaire du site d'inscription.";
    $message .= "\n\nPrénom: " . $prenom . "\nNom: " . $nom;
    mail("desti1@serveur1.be", "Nouvelle inscription sur le site", $message, "");
    mail("desti2@serveur2.be", "Nouvelle inscription sur le site", $message, "");

?>

Et voici le contenu du message proprement dit, sans l'objet :

Date : 22/5/2003 Heure : 20h09
====================
Formulaire du site d'inscription.

Prénom: Salif
Nom: Widia

Vous remarquez que le mois ne contient qu'un seul caractère alors qu'on désirerais en avoir 2. Comment feriez-vous pour y arriver sachant que les derniers mois de l'année doivent aussi s'afficher sur 2 caractères et pas 3 ?

Bon travail.

Retour