8.59 Mail 
8 Référence des fonctions 
 Manuel PHP 
 . Introduction . Pré-requis . Installation . Configuration à l'exécution . Types de ressources . Constantes pré-définies . ezmlm_hash ->mail
 
  | 
 
  8.59.8 mail()Envoi un mail[ Exemples avec mail ]   PHP 3, PHP 4 , PHP 5 
bool
 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), 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
     les classes PEAR MIME .
    
     Les RFC suivantes peuvent aussi se révéler utiles : 
      RFC 1896 ,
      RFC 2045 ,
      RFC 2046 ,
      RFC 2047 ,
      RFC 2048  et 
      RFC 2049 .
     
mail
  retourne  
TRUE
  si le mail
    est envoyé, et  
FALSE
  sinon.
    
| Attention |  | 
 
      L'implémentation de la fonction  
mail
  sur les systèmes 
      Microsoft Windows est différente en plusieurs points par rapport à celle des 
      systèmes Unix.
      Premièrement,  
mail
  n'utilise pas un binaire local pour
      composer le message mais opère uniquement sur les sockets directement, ce qui
      signifie qu'un  
MTA
  (Mail Transfert Agent) doit écouter 
      un socket réseau (qui peut être local ou distant).
      Deuxièmement, les en-têtes personnalisés comme  
From:
 ,
       
Cc:
 ,  
Bcc:
  et  
Date:
 
ne sont pas
  par le  
MTA
 
      dans un premier temps, mais sont parsés par PHP.
      Seules les versions de PHP inférieures à la version 4.3 supportent l'en-tête 
       
Cc:
  (et est sensible à la casse).
      Les versions de PHP >= 4.3 supportent toutes les en-têtes mentionnés et 
      ne sont pas sensibles à la casse.
      
 |   
 | Envoi de courrier électronique (mail) |  
<?php mail("maxou@example.com", "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 retours chariots et des caractères de nouvelle ligne
    (\r\n).
    
| Note |  | 
 
    Vous devez utiliser les caractères  
\r\n
  pour séparer
    les en-têtes bien que quelques MTA Unix remplacent automatiquement
     
\n
  par  
\r\n
  (revient à doubler
     
\r
  si  
\r\n
  est utilisé).
     
 |   
 | Envoi de eMail avec des en-têtes supplémentaires |  
<?php mail("personne@example.com", "Le sujet", $message,      "From: webmaster@{$_SERVER['SERVER_NAME']}\r\n"     ."Reply-To: webmaster@{$_SERVER['SERVER_NAME']}\r\n"     ."X-Mailer: PHP/" . phpversion()); ?>
 
 |   
    Le paramètre  
additional_parameters
 
    peut être utilisé pour passer un paramètre additionnel au programme,
    défini lorsqu'il envoie le mail en utilisant le paramètre de configuration
     
sendmail_path
 . Par exemple, cela peut être utilisé
    pour définir l'adresse d'expédition lorsque le logiciel sendmail est utilisé
    avec l'option  
-f
 . Vous devriez sûrement ajouter 
    l'utilisateur sous lequel tourne votre serveur web à votre configuration
    sendmail afin d'éviter qu'un en-tête 'X-Warning' ne soit ajouté à votre 
    message lorsque vous utilisez cette méthode pour définir l'adresse 
    d'expédition.
     
 | Envoi de eMail avec des en-têtes supplémentaires et un paramètre de ligne de commande supplémentaire |  
<?php
  mail("personne@example.com", "Le sujet", $message,      "From: webmaster@{$_SERVER['SERVER_NAME']}", "-fwebmaster@{$_SERVER['SERVER_NAME']}"); ?>
 
 |   
| Note |  | 
 
      Le cinquième paramètre a été ajouté depuis la version 4.0.5 de PHP.
      Depuis la version 4.2.3 de PHP, ce paramètre est désactivé dans le
       safe_mode  et la fonction
       
mail
  affichera un message d'avertissement
      et retournera  
FALSE
  si vous tentez de l'utiliser.
      
 |   
    Vous pouvez aussi utiliser des techniques simples de
    concaténation de chaînes pour construire des
    messages complexes :
     
 | Envoi de mail complexe avec mail |  
<?php /* destinataire */ $to  = "Mary <mary@example.com>" . ", " ; // notez la virgule $to .= "Kelly <kelly@example.com>";
  /* sujet */ $subject = "Anniversaires à souhaiter en Août";
  /* message */ $message = ' <html> <head>  <title>Rappel des anniversaires d\'Août</title> </head> <body> <p>Voici la liste des anniversaires du mois d\'Août!</p> <table>  <tr>   <th>Ami</th><th>Jour</th><th>Mois</th><th>Année</th>  </tr>  <tr>   <td>Guillaume</td><td>3</td><td>Août</td><td>1970</td>  </tr>  <tr>   <td>Sandra</td><td>17</td><td>Août</td><td>1973</td>  </tr> </table> </body> </html> ';
  /* Pour envoyer un mail au format HTML, vous pouvez configurer le type Content-type. */ $headers  = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
  /* D'autres en-têtes */ $headers .= "To: Mary <mary@example.com>, Kelly <kelly@example.com>\r\n"; $headers .= "From: Birthday Reminder <birthday@example.com>\r\n"; $headers .= "Cc: birthdayarchive@example.com\r\n"; $headers .= "Bcc: birthdaycheck@example.com\r\n";
  /* et hop, à la poste */ mail($to, $subject, $message, $headers); ?>
 
 |   
| Note |  | 
 
     Assurez-vous qu'il n'y ait aucune nouvelle ligne (ou d'autres
     espaces ou caractères blancs) dans les paramètres  
to
 
     ou  
subject
 , car cela peut avoir des effets
     secondaires irrationnels.
     
 |   
| Note |  | 
 
     Le paramètre  
to
  ne peut pas être une adresse
     de la forme "Quelqu'un <quidam@example.com>". La commande
     mail ne traitera pas correctement ce format vers le MTA (tout particulièrement sur les systèmes
     Microsoft Windows).
     
 |   
    Voir aussi
     
imap_mail
 .
    
 |