Php : Envoyer des emails texte et html en utilisant la fonction mail

PHP permet d'envoyer des emails en utilisant la fonction mail().

Vous trouverez ci-dessous des exemples PHP permettant d'envoyer un mail en format texte (sans mises en forme) et en format HTML.

Attention : des hébergeurs gratuits peuvent désactiver cette fonction pour éviter l'envoi automatique de spam.

Envoyer un mail texte

Pour envoyer un mail texte simple, il faut utiliser la syntaxe suivante :

mail("destinataire@fai.fr","sujet", "message" [, entêtes]);

Les entêtes (headers) permettent de personnaliser le mail que vous allez envoyer :

Bcc
Destinataire en copie caché (Blind carbon copy).
 
Cc
Destinataire en copie (Carbon Copy).
 
Content-Transfer-Encoding
Encodage du mail.
 
Content-Type
Type mime du mail et jeu de caractères.
 
Disposition-Notification-To
Indique l'adresse mail pour la confirmation de lecture.
 
From
Indique l'adresse mail de l'expéditeur.
 
Reply-To
Indique l'adresse mail pour la réponse.
 
X-Priority
Priorité du mail, de 1 (maximale) à 5 (minimale).

Exemple(s)

<?php
    $vbOk=false;
    $from = "expediteur@fai.fr";
    $replyTo = "expediteur@fai.fr";
    $to = "destinataire@fai.fr";
    $cc = "copie1@fai.fr, copie2@fai.fr";
    $rn = "\n";

    $sujet = "Test";
    $message = "Ceci est un message de test";

    $headers = "From: ".$from.$rn;
    $headers .= "Reply-to: ".$replyTo.$rn;
    $headers .= "Cc: ".$cc.$rn;

    if(mail($to, $sujet, $message, $headers))
        $vbOk=true;
?>



Envoyer un mail HTML (+texte)

Pour envoyer un mail HTML et texte, il faut modifier l'entête Content-Type :

Content-Type: multipart/alternative; boundary="$delimitation"

Le changement de Content-Type en multipart/alternative permet de séparer le mail en plusieurs parties et l'utilisation de boundary indique la limite de séparation.

Exemple(s)

<?php

    $vbOk=false;
    $from = "expediteur@fai.fr";
    $replyTo = "expediteur@fai.fr";
    $to = "destinataire@fai.fr";
    
    $sujet = "Test";
    $delimitation = uniqid();
    $rn = "\n";
 
    $headers = 'From: '.$from.$rn;
    $headers .= 'Reply-to: '.$replyTo.$rn;
    $headers .= 'Content-Type: multipart/alternative;'.$rn.' boundary="'.$delimitation.'"'.$rn.$rn;
 
    $message = "";
    $message .= "--".$delimitation.$rn;
    $message .= "Content-Type: text/plain; charset=utf-8".$rn;
    $message .= "Content-Transfer-Encoding: 8bit".$rn.$rn;
    $message .= "Ceci est un message de test";
 
    $message .= $rn.$rn."--".$delimitation.$rn;
 
    $message .= "Content-Type: text/html; charset=utf-8".$rn;
    $message .= "Content-Transfer-Encoding: 8bit;".$rn.$rn;
    $message .= "Ceci est un <i>message de test</i> en <strong>HTML</strong>";
 
    $message .= $rn."--".$delimitation."--";
 
    if(mail($to, $sujet, $message, $headers))
        $vbOk=true;
?>






 

Twitter Facebook Google Plus Email

Posté le 05-11-2010