1- La commande mail()

En PHP, il existe une fonction très simple qui permet d'envoyer un email. Sa syntaxe est :

mail("adresse email destinataire","sujet","corps du message","options");

Le dernier champ est facultatif, on en parlera juste après. Dans un premier temps, nous allons envoyer un email de base. Tel est le nouveau code du fichier traitant les données envoyées par le formulaire précédent :

  1. <html>
  2. <body>
  3. <h4>Merci <?php echo $_POST['nom']; ?></h4>
  4. <?php
  5. echo '<p>Votre commentaire : ' . $_POST['texte'] . '</p>';
  6. 'contact@phpfrance.com',
  7. 'Commentaire sur phpfrance.com',
  8. $_POST['nom'] . " a laissé un commentaire à propos de phpfrance.com:\n\n" . $_POST['texte']);
  9. );
  10. ?>
  11. </body>
  12. </html>

Les \n à l'intérieur du corps de l'email permettent d'aller à la ligne (attention, cela fonctionne uniquement entre double quotes (")).
Pour envoyer un email à plusieurs destinataires, il suffit de séparer les adresses par des virgules.

2- Les options

Le champ options de la fonction mail permet d'ajouter une en-tête au message à envoyer. Vous pouvez, par exemple, y mettre la date, le logiciel utilisé pour envoyer l'email ou encore l'adresse de retour...

Par exemple :

  1. $from_email = "contact@phpfrance.com";
  2. $entetedate = date("D, j M Y H:i:s -0600"); // avec offset horaire
  3. $entetemail = "From: $from_email \n"; // Adresse expéditeur
  4. $entetemail .= "Cc: \n";
  5. $entetemail .= "Bcc: \n"; // Copies cachées
  6. $entetemail .= "Reply-To: $from_email \n"; // Adresse de retour
  7. $entetemail .= "X-Mailer: PHP/" . phpversion() . "\n" ;
  8. $entetemail .= "Date: $entetedate";

La commande mail précédente reviendrait donc à :

  1. 'contact@phpfrance.com',
  2. 'Commentaire sur phpfrance.com',
  3. $_POST['nom'] . " a laissé un commentaire à propos de phpfrance.com:\n\n" . $_POST['texte'],
  4. $entetemail
  5. );

Simple, non ?

3- Cas particuliers

Fonction désactivée

Quelques hébergeurs (gratuits bien souvent) ne supportent pas la fonction mail, en raison de l'utilisation abusive de certains.

Autre fonction

D'autres limitent son utilisation, ou créent leur propre fonction. C'est le cas de Online qui a remplacé la fonction mail par la fonction email, avec une syntaxte légèrement différente

email(chaîne compte,chaîne destinataire,chaîne sujet,chaîne message[,options]);

Cas concret, pour le compte "toto", cela donne :

  1. email(
  2. "toto",
  3. "contact@phpfrance.com",
  4. "Commentaire sur phpfrance.com",
  5. $_POST['nom'] . " a laissé un commentaire à propos de phpfrance.com: \n\n" . $_POST['texte'],
  6. $entetemail
  7. );