Envoyer un message en html

JeromeRookie
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 462
Inscription: 11 Aoû 2003

Envoyer un message en html

Message le Sam Mar 01, 2008 7:59

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


SuperCureuil
WRInaute impliqué
WRInaute impliqué
 
Messages: 664
Inscription: 9 Mar 2007

Message le Sam Mar 01, 2008 8:31

Modifier l'en-ête du mail peut-être ?

Code: Tout sélectionner
Content-Type: text/html; charset="iso-8859-1"'."\n";


:?

JeromeRookie
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 462
Inscription: 11 Aoû 2003

Message le Sam Mar 01, 2008 8:37

et bien non .... :cry:
ca ne fonctionne toujours pas...


SuperCureuil
WRInaute impliqué
WRInaute impliqué
 
Messages: 664
Inscription: 9 Mar 2007

Message le Sam Mar 01, 2008 8:50

Alors avec un p'tit bout de code ce serait plus facile pour t'aider :D


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8300
Inscription: 23 Nov 2005

Message le Sam Mar 01, 2008 9:15

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 ?

JeromeRookie
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 462
Inscription: 11 Aoû 2003

Message le Sam Mar 01, 2008 15:20

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: Tout sélectionner
$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...


SuperCureuil
WRInaute impliqué
WRInaute impliqué
 
Messages: 664
Inscription: 9 Mar 2007

Message le Sam Mar 01, 2008 16:18

Sauf que le content-type d'un mail ce n'est pas une balise meta :wink:

Un lien pour ta gouverne :D

Bon travail !

clems942
WRInaute discret
WRInaute discret
 
Messages: 233
Inscription: 13 Oct 2007

Message le Sam Mar 01, 2008 16:58

Les CSS ne passent pas dans les mails ...

JeromeRookie
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 462
Inscription: 11 Aoû 2003

Message le Sam Mar 01, 2008 21:23

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: Tout sélectionner
$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: Tout sélectionner
$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: Tout sélectionner
$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 ;-)

JeromeRookie
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 462
Inscription: 11 Aoû 2003

Message le Dim Mar 02, 2008 7:33

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 ;-)

JeromeRookie
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 462
Inscription: 11 Aoû 2003

Message le Dim Mar 02, 2008 8:31

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


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3884
Inscription: 16 Nov 2004

Message le Dim Mar 02, 2008 11:51

clems942 a écrit:Les CSS ne passent pas dans les mails ...


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

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

JeromeRookie a écrit: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: Tout sélectionner
$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.

JeromeRookie
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 462
Inscription: 11 Aoû 2003

Message le Dim Mar 02, 2008 22:17

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


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités