[PHP]Envoi de mail HTML impossible via mail()
Résolu
monkey_monk
Messages postés
641
Date d'inscription
Statut
Membre
Dernière intervention
-
monkey_monk Messages postés 641 Date d'inscription Statut Membre Dernière intervention -
monkey_monk Messages postés 641 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un petit problème...je ne parviens pas à envoyer un mail au format HTML via la fonction mail() de PHP.
J'ai pourtant suivit plusieurs tutos en ligne ainsi que passé en revue la doc PHP ...mais rien ne fonctionne !
Voici mon script :
Et le mail que je reçoit est comme ceci :
Et comme vous pouvez le voir... ça n'a rien à voir avec un mail au format HTML...
Merci d'avance pour le coup de main ! ;)
j'ai un petit problème...je ne parviens pas à envoyer un mail au format HTML via la fonction mail() de PHP.
J'ai pourtant suivit plusieurs tutos en ligne ainsi que passé en revue la doc PHP ...mais rien ne fonctionne !
Voici mon script :
$destinataire = 'info@monsite.com'; $objet = 'Test d\'envoi mail html'; $message = 'test message'; $name = 'nom@prenom.com'; $boundary = "---=_Part_".md5(uniqid(rand())); $headers = 'MIME-Version: 1.0'."\r\n"; $headers .= 'Content-Type: multipart/mixed; boundary="'.$boundary.'"'."\r\n"; $msg = 'This is a multi-part message in MIME format.'."\n"; $msg .= 'Ceci est un message est au format MIME.'."\n"; $msg .= "--".$boundary."\n"; $msg .= 'Content-Type: text/html; charset="iso-8859-1"'."\n"; $msg .= 'Content-Transfer-Encoding: quoted-printable'."\n"; $msg .= 'Content-Disposition: inline \n\n'; $msg .= '<html><head><title>Test mail html</title></head><body>'; $msg .= '<p>Bonjour,</p>'; $msg .= '<p>ce mail à été envoyé depuis <strong>Mon Site .com</strong> par '.$name.'</p>'; $msg .= '<p>****************************************</p>'; $msg .= '<p><strong>'.$message.'</strong></p>'; $msg .= '<p>****************************************</p>'; $msg .= '</body></html>'; $msg .= "\n\n--".$boundary."\n\n"; // envoi mail($destinataire,$objet,$msg,$headers);
Et le mail que je reçoit est comme ceci :
Content-Type: multipart/mixed; boundary="---=_Part_a535a7b9f85bcef35f46bc31849162bd" Message-Id: <20100131150508.14974133E3@60gp.ovh.net> Date: Sun, 31 Jan 2010 16:05:07 +0100 (CET) From: monsiteo@60gp.ovh.net (monsite) X-Ovh-Tracer-Id: 11251962194064415914 X-Ovh-Tracer-Id: 11251962195151658154 X-Ovh-Remote: 188.165.45.9 (50.mail-out.ovh.net) X-Ovh-Local: 213.186.33.29 (mx1.ovh.net) X-Spam-Check: DONE|U 0.5/N X-Antivirus: avast! (VPS 100130-1, 30/01/2010), Inbound message X-Antivirus-Status: Clean This is a multi-part message in MIME format. Ceci est un message est au format MIME. -----=_Part_a535a7b9f85bcef35f46bc31849162bd Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline \n\n<html><head><title>Test mail html</title></head><body><p>Bonjour,</p><p>ce mail à été envoyé depuis <strong>Mon Site .com</strong> par nom@prenom.com</p><p>****************************************</p><p><strong>test message</strong></p><p>****************************************</p></body></html> -----=_Part_a535a7b9f85bcef35f46bc31849162bd
Et comme vous pouvez le voir... ça n'a rien à voir avec un mail au format HTML...
Merci d'avance pour le coup de main ! ;)
A voir également:
- [PHP]Envoi de mail HTML impossible via mail()
- Windows live mail - Télécharger - Mail
- Publipostage mail - Accueil - Word
- Programmer envoi mail gmail - Guide
- Envoi mail cci - Guide
- Comment télécharger un mail - Guide
4 réponses
Je n'ai pas réussi avec ton code car je n'arrive pas à d/l la classe... mais le problème semble être dans l'ordre des entêtes... le code suivant fonctionne pour moi :
A noter que j'ai du placer les
Merci pour le coup de main et à une prochaine ! ;)
$destinataire = 'info@monsite.com'; $name = 'Paul'; $name_adr = 'nom@prenom.com'; $objet = 'Mon Site : message de '.$name; $message = 'test message';; $header = 'From: '.$name.' <'.$name_adr.'>'."\n"; $header .= 'Cc: '."\n"; $header .= 'Bcc: '."\n"; $header .= 'Reply-To: '.$name_adr."\n"; $header .= 'X-Mailer: PHP/'.phpversion()."\n"; $header .= 'Date :'.date('D, j M Y H:i:s -0600')."\n"; $header .= 'Mime-version: 1.0'."\n"; $header .= 'Content-type: text/html; charset=iso-8859-1'."\n"; $msg = '<strong>test</strong><br />'; $msg .= '<img src="http://www.monsite.com/image.jpg" alt="test" />'; mail($destinataire,$objet,$msg,$header);
A noter que j'ai du placer les
\nentre guillemets (
"\n") et non entre apostrophes (
'\n') !
Merci pour le coup de main et à une prochaine ! ;)
bonjour,
ces informations :
$msg = 'This is a multi-part message in MIME format.'."\n";
$msg .= 'Ceci est un message est au format MIME.'."\n";
$msg .= "--".$boundary."\n";
$msg .= 'Content-Type: text/html; charset="iso-8859-1"'."\n";
$msg .= 'Content-Transfer-Encoding: quoted-printable'."\n";
$msg .= 'Content-Disposition: inline \n\n';
ne devraient-elles pas être dans le headers plutôt que dans le coprs du message ?
ces informations :
$msg = 'This is a multi-part message in MIME format.'."\n";
$msg .= 'Ceci est un message est au format MIME.'."\n";
$msg .= "--".$boundary."\n";
$msg .= 'Content-Type: text/html; charset="iso-8859-1"'."\n";
$msg .= 'Content-Transfer-Encoding: quoted-printable'."\n";
$msg .= 'Content-Disposition: inline \n\n';
ne devraient-elles pas être dans le headers plutôt que dans le coprs du message ?
ce code fonctionne sur un de mes sites : (avec le fichier class.mail.php disponble ici ; https://www.cjoint.com/?bFriJVgnjW )
attn adresse du destinataire à changer
<?php
function traduire($texte) {
//$zone = stripslashes($texte);
$texte = str_replace("'"," ",$texte);
$texte = stripslashes($texte);
return $texte;
}
$adressemail = traduire($_GET["adresse_email"]);
$zone = traduire($_GET["zone"]);
$nompre = traduire($_GET["nompre"]);
echo "<body background='fond.jpg'>";
echo "<font color='blue'>";
echo "xxx vous remercie de votre confiance et met tout en oeuvre pour ";
echo "satisfaire votre demande dans les plus brefs délais</font>";
//---------------------------------
$message= "";
$message .= "<html>";
$message .= "<meta http-equiv='Content-Type' content='text/html; charset=windows-1152'>";
$message .= "<body background='fond.jpg' >";
$message .= "<font color='blue'><br><br><b>Contact</b></font>";
$message .= "<br>";
$message .= "<hr size=2 align=center color='#0000FF'>";
$message .= "<table>";
$message .= "<tr>";
$message .= "<td width=50%>";
$message .= "Identification : $nompre<br>";
$message .= "</tr>"
$message .= "<tr>";
$message .= "<td width=50%>";
$message .= "E-mail : $adressemail<br>";
$message .= "</tr>";
$message .= "</table>";
$message .= "<hr size=2 align=center color='#0000FF'>";
$message .= "$zone<br>";
$message .= "</td></tr></table>";
$message .= "<hr size=2 width='100%' align=center color='#0000FF'>";
$message .= "</html> ";
//-------------------------------
include('class.mail.php');
$mail = new simplemail;
$mail -> addrecipient(destinataire);
$mail -> addfrom('.$adressemail.');
$mail -> addsubject('Contact');
// le message text
//$mail -> text = 'Demande de contact;
// le message format html
$mail -> html = "$message";
if ( $mail -> sendmail() ) { echo "<br>Votre message a été envoyé"; } else { echo "<br>erreur dans l'envoi du message"; echo $mail->error_log; }
echo "<br>";
echo "<input type='button' value=' Terminer ' onclick='javascript:window.close()'>";
?>
attn adresse du destinataire à changer
<?php
function traduire($texte) {
//$zone = stripslashes($texte);
$texte = str_replace("'"," ",$texte);
$texte = stripslashes($texte);
return $texte;
}
$adressemail = traduire($_GET["adresse_email"]);
$zone = traduire($_GET["zone"]);
$nompre = traduire($_GET["nompre"]);
echo "<body background='fond.jpg'>";
echo "<font color='blue'>";
echo "xxx vous remercie de votre confiance et met tout en oeuvre pour ";
echo "satisfaire votre demande dans les plus brefs délais</font>";
//---------------------------------
$message= "";
$message .= "<html>";
$message .= "<meta http-equiv='Content-Type' content='text/html; charset=windows-1152'>";
$message .= "<body background='fond.jpg' >";
$message .= "<font color='blue'><br><br><b>Contact</b></font>";
$message .= "<br>";
$message .= "<hr size=2 align=center color='#0000FF'>";
$message .= "<table>";
$message .= "<tr>";
$message .= "<td width=50%>";
$message .= "Identification : $nompre<br>";
$message .= "</tr>"
$message .= "<tr>";
$message .= "<td width=50%>";
$message .= "E-mail : $adressemail<br>";
$message .= "</tr>";
$message .= "</table>";
$message .= "<hr size=2 align=center color='#0000FF'>";
$message .= "$zone<br>";
$message .= "</td></tr></table>";
$message .= "<hr size=2 width='100%' align=center color='#0000FF'>";
$message .= "</html> ";
//-------------------------------
include('class.mail.php');
$mail = new simplemail;
$mail -> addrecipient(destinataire);
$mail -> addfrom('.$adressemail.');
$mail -> addsubject('Contact');
// le message text
//$mail -> text = 'Demande de contact;
// le message format html
$mail -> html = "$message";
if ( $mail -> sendmail() ) { echo "<br>Votre message a été envoyé"; } else { echo "<br>erreur dans l'envoi du message"; echo $mail->error_log; }
echo "<br>";
echo "<input type='button' value=' Terminer ' onclick='javascript:window.close()'>";
?>