Manuel PHP
Précédent |  | Suivant

# mail

(PHP 3 <= 3.0.18, PHP 4 >= 4.0.0)

mail -- Envoi de mail

## Description

``boolean mail` (string to, string subject, string message, string [additional_headers], string [additional_parameters])`

mail() poste automatiquement le message `message` à destination de `to`. Les destinataires multiples doivent être séparés par des virgules. Les emails avec pièces jointes ou contenus particuliers (comme les emails en HTML, par exemple), peuvent être réalisés avec cette fonction. Il faut respecter l'encodage MIME. Pour plus de détails, voyez http://www.zend.com/zend/spotlight/sendmimeemailpart1.php et la RFC 1896 (Visit http://www.rfc-editor.org/).

mail() retourne `TRUE` si le mail est envoyé, et `FALSE` sinon.

Exemple 1. Envoi de courrier électronique (mail)
    <?php
      mail("rasmus@lerdorf.on.ca", "Mon Sujet", "Ligne 1\nLigne 2\nLigne 3");
    ?>

Le quatrième argument passé sera inséré à la fin de l'en-tête. Typiquement, cela permet d'insérer des en-têtes supplémentaires. Les en-têtes multiples doivent être séparés par des virgules.

> Note : Sous Windows 32bits, vous devez utiliser `\r\n` pour séparer les en-têtes. Notez aussi que les en-têtes cc: et bcc: sont sensibles à la casse et doivent être écrits `Cc:` et `Bcc:` sous Win32.

Si le cinquième argument `additional_parameters` est fourni, PHP l'utilisera dans son appel du programme d'envoi de courrier électronique. Ceci est pratique pour passer une valeur correcte à l'en-tête `Return-Path`, avec sendmail.

> Note : Le cinquième paramètre a été ajouté en PHP 4.0.5.

Exemple 2. Envoi de eMail avec des en-têtes supplémentaires.
    <?php
      mail("nobody@aol.com", "Le sujet", $message,
           "From: webmaster@$SERVER_NAME\nReply-To: webmaster@$SERVER_NAME\nX-Mailer: PHP/" . phpversion());
    ?>

Avec le cinquième paramètre, vous pouvez ajouter d'autres paramètres de ligne de commande qui seront utilisés par le programme d'envoi de courrier. Dans l'exemple ci-dessous, l'en-tête `Return-Path` est correctement paramétré. Normalement, sendmail ajoute automatiquement l'en-tête `X-Authentication-Warning` (paramètre -f), car l'utilisateur "serveur web" n'est probablement pas un de ses utilisateurs de confiance ("trusted users"). Pour supprimer cette alerte, ajoutez l'utilisateur du serveur web dans la configuration de sendmail.

Exemple 3. Envoi de eMail avec des en-têtes supplémentaires et un paramètre de ligne de commande supplémentaire
    <?php
      mail("nobody@aol.com", "the subject", $message, "From: webmaster@$SERVER_NAME", "-fwebmaster@$SERVERNAME");
    ?>

Vous pouvez aussi utiliser des techniques simples de concaténations de chaînes pour construire des messages complexes :

Exemple 4. Envoi de mail complexe.
    <?php
      /* destinataire */
        $recipient .= "Mary <mary@u.college.edu>".", " ; //remarquez les virgules
        $recipient .= "Kelly <kelly@u.college.edu>".", ";
        $recipient .= "ronabop@php.net";
      /* sujet */
        $subject = "Rappel des anniversaires du mois d'aoÛt";
      /* message */
        $message .= "Le mail suivant inclut une table au format ASCII\n";
        $message .= "Jour \t\tMois \t\tAn\n";
        $message .= "3 \t\tAou\t\t1970\n";
        $message .= "17\t\tAou\t\t1973\n";
      /* Vous pouvez ajouter une signature */
        $message .= "--\r\n";
      //Délimiteur de signature
        $message .= "Rappel d'anniversaire : copyleft par public domain";
      /* D'autres en-têtes : errors, From cc's, bcc's, etc */
        $headers .= "From: Rappel d'anniversaire <birthday@php.net>\n";
        $headers .= "X-Sender: <birthday@php.net>\n";
        $headers .= "X-Mailer: PHP\n"; // maileur
        $headers .= "X-Priority: 1\n"; //  Message urgent!
        $headers .= "Return-Path: <birthday@php.net>\n";  // Re-chemin de retour pour les erreurs
        $headers .= "Content-Type: text/html; charset=iso-8859-1\n" // Type MIME
        $headers .= "Cc:birthdayarchive@php.net\n"; // Champs CC
        $headers .= "Bcc:birthdaycheck@php.net, birthdaygifts@php.net"; // Champs BCCs
      /* et hop, à la poste */
        mail($recipient, $subject, $message, $headers);
    ?>

> Note : Assurez-vous qu'il n'y a aucune nouvelle ligne (ou d'autre espace ou caractère blanc) dans les paramètres `to` ou `subject`, car cela peut avoir des effets secondaires irrationnels.

Précédent | Sommaire | Suivant
Email | Niveau supérieur | ezmlm_hash