[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   -
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 :
        $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:

4 réponses

monkey_monk Messages postés 641 Date d'inscription   Statut Membre Dernière intervention   131
 
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 :
        $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
\n
entre guillemets (
"\n"
) et non entre apostrophes (
'\n'
) !

Merci pour le coup de main et à une prochaine ! ;)
1
giheller Messages postés 1882 Date d'inscription   Statut Membre Dernière intervention   142
 
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 ?
0
monkey_monk Messages postés 641 Date d'inscription   Statut Membre Dernière intervention   131
 
Et bien, j'ai essayé mais le résultat est le même... je ne sais vraiment pas ce que je fais mal...
0
giheller Messages postés 1882 Date d'inscription   Statut Membre Dernière intervention   142
 
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()'>";

?>
0