E-mail « multi-part » (texte + html)

Le script ci-dessous envoie un e-mail « multi-part » (texte + html) : selon le logiciel de messagerie et/ou les réglages de l’utilisateur, le contenu de l’un ou l’autre format est affiché.
Pour la gestion de newsletter, voir aussi wanewsletter.

Une autre source pour les mails multipart en php : www.vulgarisation-informatique.com/mail.php.

<?php
$destinataire = "destinataire@exemple.com";
$sujet = "Le sujet";
$messtxt = "message format texte";
$messhtml = "<html>code source html... </html>";
$from = "moi@exemple.com";

$boundary = "_parties_".md5 (uniqid (rand())); // génération d'une limite (boundary)
$limite = "--" . $boundary; // les parties du message ne sont reconnues que si le délimiteur (boundary) est précédé de 2 tirets

$entete = "Reply-to: $from\n";
$entete .= "From:$from\n";
$entete .= "Date: ".date("l j F Y, G:i")."\n";
$entete .= "MIME-Version: 1.0\n";
$entete .= "Content-Type: multipart/alternative;\n";
$entete .= "    boundary=\"$boundary\"\n\n"; // une tabulation (ou une espace) est indispensable ici avant "boundary" !

$corps = "This is a multi-part message in MIME format.\n";
$corps .= "Ceci est un message \"multi-part\" au format MIME.\n\n";

//Le message en texte simple pour les navigateurs qui n'acceptent pas le HTML
$corps .= "$limite\n";
$corps .= "Content-Type: text/plain; charset=\"ISO-8859-1\"\n";
$corps .= "Content-Transfer-Encoding: 7bit\n\n";
$corps .= $messtxt;
$corps .= "\n\n";

//le message en html original
$corps .= "$limite\n";
$corps .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n";
$corps .= "Content-Transfer-Encoding: 7bit\n\n";
$corps .= $messhtml;
$corps .= "\n\n$limite\n";

if(mail($destinataire,$sujet,$corps,$entete))
{
echo 'Le mail a été envoyé';
}
else
{
echo 'Le mail n\'a pu être envoyé';
}
?>

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *