HOBBES World.com

PHP
Présentation
Variables
Structure
Formulaire
Mail
Bases de données
Expressions Régulières
Cookies
Authentification

Structures
If... Else
For
While
Switch

Exemples
Exemple 1
Exemple 2

Menu Général
Informatique
Programmation
Loisirs
Outils
Divers
Accueil

Log In


Login à vie

Créer un compte
Mot de passe

Envoi de mail texte



  1. Envoi de Mail


  1. 1. Définition des champs

Pour envoyer des mails, il suffit d'utiliser la commande "mail" de PHP.
mail (<adresse_destination>, <Object>, <Message> [,<Header>]);
  • <adresse_destination> : adresse e-mail du destinataire du mail
  • <Object> : titre du mail
  • <Message> : contenu du mail
  • <Header> : header du mail, c'est à dire toute les "options" d'envoi du mail
      Le header est une chaîne de caractère contenant de nombreux champs :
    • From : Adresse de l'expéditeur (format : Nom <adresse_mail>)
    • X-Sender : Adresse réelle de l'expéditeur
    • X-Mailer : Logiciel utilisé pour l'envoi des mails
    • X-Priority : Priorité accordée au mail (valeur allant de 1 pour Urgent à 3 pour normal)
    • Return-Path : Adresse utilisée pour la réponse au mail
    • Content-Type : Contenu du mail (texte, html...)
    • cc : Carbon Copy, c'est à dire adresse en copie du mail, visible par tout le monde
    • bcc : Blind Carbon Copy, idem que "cc", mais invisible !


      1. 2. Exemple d'envoi d'un mail de base en PHP

    <?
    $adresse = "nospam@mail.com";
    $object = "Test d'envoi de mail";
    $message = "Test afin de voir si l'envoi de mail fonctionne ou non !\n\n";
    mail ($adresse, $object, $message);
    ?>

      1. 3. Exemple d'envoi d'un mail plus complet en PHP

    <?
    $adresse = "nospam@mail.com";
    $object = "Test d'envoi de mail";
    $message = "Test afin de voir si l'envoi de mail fonctionne ou non !\n\n";
    $headers = "From: Expediteur <nospam-sender@mail.com>\n";
    $headers .= "X-Sender: <nospam-sender@mail.com>\n";
    $headers .= "X-Mailer: PHP\n";
    $headers .= "X-Priority: 1\n";
    $headers .= "Return-Path: <nospam-sender@mail.com>\n";
    $headers .= "Content-Type: text/html; charset=iso-8859-1\n";
    $headers .= "cc:autre_adresse@mail.com\n";
    $headers .= "bcc:autre_adresse_cachee@mail.com\n";
    mail ($adresse, $object, $message,$headers);
    ?>


    Si vous voulez avoir plus d'informations sur les formulaires :
    Les formulaires en PHP et les formulaires HTML.



      2. Envoi de mail avec pièces jointes


      2. 1. Exemple

    L'envoi de mail se fait en 2 parties bien distinctes : le formulaire d'envoi de mail et le script d'envoi de mail.

    Le formulaire doit contenir un champs de type "File", et surtout doit être déclaré en encodage : "enctype="multipart/form-data"".
    Nous allons supposer que le nom du champs "File" est "attach".

    Si vous voulez avoir plus d'informations sur les formulaires :
    Les formulaires en PHP et les formulaires HTML.


    Voici le formulaire HTML :
    <form method=POST action="mail.php" enctype="multipart/form-data">
    Adresse : <br><input name="adresse" size=40 value=""><br>
    CC : <br><input name="cc" size=40 value=""><br>
    BCC : <br><input name="bcc" size=40 value=""><br>
    Sujet : <br><input name="subject" size=40 value=""><br>
    Message : <br>
    <Textarea name="msg" cols=40 rows=10 WRAP=HARD>
    </TextArea><br>
    Fichiers : <br>
    <input type=file size=40 name="attach"><br><br>
    <center><input type=submit value="Envoyer"></center>
    <input type=hidden name="message" value=1>
    </form>
    Voici le script PHP associé au traitement :
    <?
      $headers = "From: Votre Nom <monnom@mondomaine.com>\n";
      $headers .= "X-Sender: <monnom@mondomaine.com>\n";
      $headers .= "X-Mailer: PHP\n";
      $headers .= "X-Priority: 3\n";
      $headers .= "Return-Path: <monnom@mondomaine.com>\n";
      $headers .= "cc:".$cc."\n";
      $headers .= "bcc:".$bcc."\n";
      if (is_uploaded_file($attach)) {
        $file = fopen($attach, "r");
        $contents = fread($file, $attach_size);
        $encoded_attach = chunk_split(base64_encode($contents));
        fclose($file);

        $headers .= "MIME-version: 1.0\n";
        $headers .= "Content-type: multipart/mixed; ";
        $headers .= "boundary=\"Message-Boundary\"\n";
        $headers .= "Content-transfer-encoding: 7BIT\n";

        $body_top = "--Message-Boundary\n";
        $body_top .= "Content-type: text/plain; charset=US-ASCII\n";
        $body_top .= "Content-transfer-encoding: 7BIT\n";
        $body_top .= "Content-description: Mail message body\n\n";

        $msg_cpl = $body_top.stripslashes($msg);

        $msg_cpl .= "\n\n--Message-Boundary\n";
        $msg_cpl .= "Content-type: $attach_type; name=\"$attach_name\"\n";
        $msg_cpl .= "Content-Transfer-Encoding: BASE64\n";
        $msg_cpl .= "Content-disposition: attachment; filename=\"$attach_name\"\n\n";
        $msg_cpl .= "$encoded_attach\n";
        $msg_cpl .= "--Message-Boundary--\n";
      }
      if (mail ("$adresse","".stripslashes($subject)."","$msg_cpl",$headers)) {
        echo ("<center><font color=green>Mail envoyé</font></center>");
      }
    ?>

      2. 2. Explications

    La partie sur les "headers" a déjà été traitée dans la première partie, je n'en reparlerais pas ici.
    la ligne "if (is_uploaded_file($attach))" permet de vérifier si le fichier à bien été envoyé en paramètre (d'autres tests peuvent être fait afin de vérifier si l'utilisateur à voulu envoyer un fichier ou non !).
    Les 4 lignes suivantes permettent de lire le contenu du fichier et de le mettre dans une variable "$encoded_attach" codée avec une base64. Ceci n'est pas forcement essentiel pour cette partie, donc, si vous ne comprenez pas à quoi cela correspond, j'en parlerais peut-être plus tard.

    Les 4 lignes suivantes ajoutent au header les informations concernant l'envoi de pièce attachées (à copier telles quelles !).
    La variable "$body_top" fixe le corps du mail, avec les variables reprises dans ce qui a été écrit dans le formulaire.
    Ensuite, on ajoute le fichier attaché dans le corps du mail.

    La dernière vérification permet de s'assurer que le mail a bien été envoyé.




      » Commentaires

    Aucun commentaire pour cette page.

    Si vous souhaitez ajouter un commentaire, vous devez être identifié


  •  Page modifiée le : 22/07/2002
    Site modifié le : 02/04/2008
      Flux RSS : cliquez-ici si vous voulez suivre les évolutions
    Contacter le webmaster : si vous trouvez qu'il manque des infos, n'hésitez pas à me le dire !
    © HobbesWorld - /php/mail.php