Envoyer un message en html

WRInaute occasionnel
bonjour
pour développer ma newsletter hebdo, j'ai créé un script maison. il calcul une variable $html que je souhaite ensuite envoyer par mail().
lorsque je fais un echo $html, j'ai le bon format. par contre, lorsque j'utilise la fonction mail et que j'ouvre le mail reçu, c'est le code qui s'affiche...
quelqu'un a-t-il la solution ?
Merci
 
WRInaute accro
Par défaut la fonction mail envoi en plain text, non en html. Donc je pense bien aussi à un problème de header manquant où mal placé.

Un bout de code ?
 
WRInaute occasionnel
en fait, je voulais vous épargner cela car c'est assez lourd. je mets le début pour que vous puissiez voir le header.

Code:
$html = "<html>\n";
$html .= "<head>\n";
$html .= "<meta http-equiv='Content-Language' content='fr'>\n";
$html .= "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>\n";

$html .= "<link rel='stylesheet' type='text/css' href='Style.css'>\n";
$html .= "<LINK href='h**p://www.ateliermagique.com/style.css' type=text/css rel=stylesheet>\n";
$html .= "</head>\n";
$html .= "<BODY bgColor=#F9E29F leftMargin=0 topMargin=0>\n";
$html .= "<br>\n";
$html .= "<SPAN class='body'><i>\n";
$html .= "Cette newsletter est au format HTML. Si vous ne parvenez pas à la lire, copiez le lien suivant dans votre navigateur Internet pour la visualiser correctement : <a href='h**p://www.ateliermagique.com/newsletter_archive/newsletter_20080130.htm'>http://...</a>\n.\n";
$html .= "Pour être sur de recevoir tous mes mails, je vous conseille d'ajouter l'adresse ... à votre carnet d'adresses.</span></i><br><br>\n";
$html .= "<table border='1' cellpadding='0' cellspacing='0' align=center style='border-collapse: collapse' bordercolor='#111111' width='90%' id='AutoNumber1'>\n";
$html .= "<tr>\n";
$html .= "<td width='100%'>\n";

je rappelle que echo $html; donne un truc tout à fait convenable à l'écran...
 
WRInaute occasionnel
j'ai oté la CSS et lu la page du lien ci-dessus et ca ne marche toujours pas.
dans le désespoir, j'ai fait une page du type
Code:
$message ='<html><head><title>Un titre ici</title></head><body>Un message de test</body></html>'; 
mail("webmaster@ateliermagique.com","test html",$message);

lorsque j'ouvre le mail reçu j'obtiens ceci :
<html><head><title>Un titre ici</title></head><body>Un message de test</body></html>

inquiétant non ? n'est-ce pas lié à mon outlook ???

voici mon code à présent :
Code:
$html = "<html>\n";
$html .= "<head>\n";
$html .= "<meta http-equiv='Content-Language' content='fr'>\n";
$html .= "</head>\n";
$html .= "<BODY bgColor=#F9E29F leftMargin=0 topMargin=0>\n";

et pour l'envoi :
Code:
$entetedate  = date("D, j M Y H:i:s -0600"); // Offset horaire
$entetemail  = "From: $from_email \n"; // Adresse expéditeur
$entetemail .= "Cc: \n";

$entetemail .= "Bcc: \n"; // Copies cachées
$entetemail .= "Reply-To: erreur_news@ateliermagique.com \n"; // Adresse de retour
$entetemail .= "X-Mailer: PHP/" . phpversion() . "\n" ;
$entetemail .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n";

$entetemail .= "Date: $entetedate";
mail("webmaster@ateliermagique.com","Newsletter test",$html,$entetemail);

il n'y a bientot plus de code, on devrait trouver mon erreur ;-)
 
WRInaute occasionnel
j'ai trouvé. c'était mon header qui posait problème.
j'ai plutot pris celui-ci :
$headers ='From: "nom"<adresse@fai.fr>'."\n";
$headers .='Reply-To: adresse_de_reponse@fai.fr'."\n";
$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';

merci pour le lien ;-)
 
WRInaute occasionnel
une dernière question : j'ai ma newsletter dans une variable $html et j'aimerais l'enregistrer dans une bdd.
comment faire car lorsque je fais
$sql = "INSERT INTO contenu (id,corps) VALUES ('','$html')";
j'ai une erreur de syntaxe car sql interprête $html...
merci
 
WRInaute accro
clems942 a dit:
Les CSS ne passent pas dans les mails ...

Abonne toi, cela devrait te faire changer d'avis :D

https://www.webrankinfo.com/wri/abonnements.php

JeromeRookie a dit:
une dernière question : j'ai ma newsletter dans une variable $html et j'aimerais l'enregistrer dans une bdd.
comment faire car lorsque je fais
$sql = "INSERT INTO contenu (id,corps) VALUES ('','$html')";
j'ai une erreur de syntaxe car sql interprête $html...
merci

Declare ton champ en LONGTEXT et tu peux forcer l'insertion:

Code:
$requete = "INSERT INTO contenu (corps) VALUES ('".mysql_real_escape_string($texte_newsletter_html)."')";

Prend aussi pour habitude d'ajouter des préfixes à tes variables, cela t'évitera de tomber sur des mots réservés et tu pollueras moins ton espace de travail.
 
WRInaute occasionnel
merci pour votre aide. elle m'a été très précieuse ;-)
et ma première newsletter selfmade vient de partir. merci aussi à Olivier qui m'a aidé à extraire les sujets les plus populaires de la semaine dans phpbb
 
Discussions similaires
Haut