Envois mail en html (petit beug)
Résolu/Fermé
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
-
8 janv. 2015 à 17:07
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 9 janv. 2015 à 13:26
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 9 janv. 2015 à 13:26
A voir également:
- Envois mail en html (petit beug)
- Yahoo mail - Accueil - Mail
- Publipostage mail - Accueil - Word
- Editeur html - Télécharger - HTML
- Windows live mail - Télécharger - Mail
- Boîte mail française gratuite - Guide
10 réponses
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
8 janv. 2015 à 17:12
8 janv. 2015 à 17:12
Bonjour,
As tu regardé ce que contenait ta variable $f_Body ?
Il se peut que tu doives utiliser le htmlentities.
Essaye ceci: (ligne 14 de ton script)
As tu regardé ce que contenait ta variable $f_Body ?
Il se peut que tu doives utiliser le htmlentities.
Essaye ceci: (ligne 14 de ton script)
$f_Body = isset($f_Body) ? htmlentities($f_Body, ENT_QUOTES, "UTF-8") :'Aucune Information disponible dans le Body !';
Mouslim02
Messages postés
320
Date d'inscription
lundi 28 juillet 2014
Statut
Membre
Dernière intervention
4 juin 2015
11
Modifié par Mouslim02 le 8/01/2015 à 17:12
Modifié par Mouslim02 le 8/01/2015 à 17:12
salut
je pense quil faudrais enlever le "text/plain" a la 43 eme ligne et mettre "text/html" a sa place
je m'etonne aussi pouquoi il y a des répétitions dans ton code à la ligne 42
bon courage ;)
le bon comportement c'est important !
de bonnes personnes sont celles qui vont voir "Ils ont besoin de votre aide" de meilleurs personnes sont celles qui cliquent sur "tout les messages sans reponses"
je pense quil faudrais enlever le "text/plain" a la 43 eme ligne et mettre "text/html" a sa place
je m'etonne aussi pouquoi il y a des répétitions dans ton code à la ligne 42
bon courage ;)
le bon comportement c'est important !
de bonnes personnes sont celles qui vont voir "Ils ont besoin de votre aide" de meilleurs personnes sont celles qui cliquent sur "tout les messages sans reponses"
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
8 janv. 2015 à 17:18
8 janv. 2015 à 17:18
J'ai ajouté la ligne 14 et supprimé une répétition en gardant que :
Malgré tout, il ne fonctionne toujours pas !
Ce qui me parait idiot c'est que si je met le code html dans $f_Body =""; là il fonctionne...
$My_Header = "<html><head></head><body>"; $My_Footer = "</body></html>"; $My_Messag = $My_Header.$f_Body.$My_Footer; $bound = "-----=".md5(rand()); $titre = $f_Sujet; $tete = "From: Newsletter <newsletter@sivop.com>".$rn; $tete.= "MIME-Version: 1.0".$rn; $tete.= "Content-Type: multipart/alternative;".$rn." boundary=\"$bound\"".$rn; $corps.= $rn."--".$bound.$rn; $corps.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$rn; $corps.= "Content-Transfer-Encoding: 8bit".$rn; $corps.= $rn.$My_Messag.$rn; $corps.= $rn."--".$bound."--".$rn; $corps.= $rn."--".$bound."--".$rn;
Malgré tout, il ne fonctionne toujours pas !
Ce qui me parait idiot c'est que si je met le code html dans $f_Body =""; là il fonctionne...
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
8 janv. 2015 à 17:22
8 janv. 2015 à 17:22
Humm...
tu peux reposter ton code ENTIER ?
Quand tu dis.. je AJOUTE le ligne 14 ... j'ai peur...
Il faut la REMPLACER par l'ajouter !
Et je repose la question....
AS tu regardé ce que contenait ta variable (avant l'envoie du mail ) ???
Avant la ligne :
Ajoute ceci et regarde ce que ça donne :
tu peux reposter ton code ENTIER ?
Quand tu dis.. je AJOUTE le ligne 14 ... j'ai peur...
Il faut la REMPLACER par l'ajouter !
Et je repose la question....
AS tu regardé ce que contenait ta variable (avant l'envoie du mail ) ???
Avant la ligne :
if(mail($dest, $titre, $corps, $tete)){$ok_mail="true";}else{$erreur.="<div class='DivError TexteError'><li>Erreur d'envois</div>";}}}}
Ajoute ceci et regarde ce que ça donne :
echo "<pre>".$corps."</pre>";
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
8 janv. 2015 à 17:29
8 janv. 2015 à 17:29
D'abord tu as raison il y avait une répétition text/plain et text/html
J'ai supprimé la répétition et voici le code complet avec toutes modifications :
Et voici ce que je reçois dans l'echo :
J'ai supprimé la répétition et voici le code complet avec toutes modifications :
<?php if(isset($_POST['EnvoyerMail'])){$erreur=""; while(list($var,$val)=each($_POST)){if(!is_array($val)){$$var=strip_tags($val);} else{while(list($arvar,$arval)=each($val)){$$var[$arvar]=strip_tags($arval);}}} $f_Sujet = trim(preg_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_Sujet)); $f_Body = isset($f_Body) ? htmlentities($f_Body, ENT_QUOTES, "UTF-8") :'Aucune Information disponible dans le Body !'; if(strlen($f_Sujet)<2) {$erreur.="<li><strong>Sujet du message</strong> vide"; $errf_Sujet=1;} if(strlen($f_Body)<2) {$erreur.="<li><strong>Corps du message</strong> vide"; $errf_Body=1;} if($erreur==""){ $db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS); mysql_select_db(MYSQL_BASE,$db); $sql = 'SELECT * FROM tb_newsletter_adresses'; $req = mysql_query($sql) or die($sql."<br />".mysql_error()); while($data = mysql_fetch_assoc($req)){ $dest= $data['Newsletter'].","; if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $dest)) {$rn = "\r\n";} else {$rn = "\n";} $My_Header = "<html><head></head><body>"; $My_Footer = "</body></html>"; $My_Messag = $My_Header.$f_Body.$My_Footer; $bound = "-----=".md5(rand()); $titre = $f_Sujet; $tete = "From: Newsletter <newsletter@sivop.com>".$rn; $tete.= "MIME-Version: 1.0".$rn; $tete.= "Content-Type: multipart/mixed;".$rn." boundary=\"$bound\"".$rn; $corps.= $rn."--".$bound.$rn; $corps.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$rn; $corps.= "Content-Transfer-Encoding: 8bit".$rn; $corps.= $rn.$My_Messag.$rn; $corps.= $rn."--".$bound."--".$rn; $corps.= $rn."--".$bound."--".$rn; echo "<pre>".$corps."</pre>"; if(mail($dest, $titre, $corps, $tete)){$ok_mail="true";}else{$erreur.="<div class='DivError TexteError'><li>Erreur d'envois</div>";}}}} ?>
Et voici ce que je reçois dans l'echo :
-------=a7e95688645a03a658bc2307b73a17ff
Content-Type: text/html; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
Bonjour
-------=a7e95688645a03a658bc2307b73a17ff--
-------=a7e95688645a03a658bc2307b73a17ff--
-------=121b8720bd929cd996d9af82fa29e6bd
Content-Type: text/html; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
Bonjour
-------=121b8720bd929cd996d9af82fa29e6bd--
-------=121b8720bd929cd996d9af82fa29e6bd--
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
8 janv. 2015 à 17:54
8 janv. 2015 à 17:54
Tu as encore de la répétition...
Tu peux tester ça :
Tu peux tester ça :
<?php if(isset($_POST['EnvoyerMail'])){$erreur=""; while(list($var,$val)=each($_POST)){ if(!is_array($val)){$$var=strip_tags($val); }else{ while(list($arvar,$arval)=each($val)){ $$var[$arvar]=strip_tags($arval); } } } $f_Sujet = trim(preg_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_Sujet)); //------------------------------------------------ // le temps des tests : //------------------------------------------------ echo "<pre> Body<br>"; print_r($f_Body); echo "</pre>"; //------------------------------------------------ $f_Body = isset($f_Body) ? htmlentities($f_Body, ENT_QUOTES, "UTF-8") :''; if(strlen($f_Sujet)<2) {$erreur.="<li><strong>Sujet du message</strong> vide"; $errf_Sujet=1;} if(strlen($f_Body)<2) {$erreur.="<li><strong>Corps du message</strong> vide"; $errf_Body=1;} if($erreur==""){ $db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS); mysql_select_db(MYSQL_BASE,$db); $sql = 'SELECT * FROM tb_newsletter_adresses'; $req = mysql_query($sql) or die($sql."<br />".mysql_error()); while($data = mysql_fetch_assoc($req)){ $dest= $data['Newsletter'].","; if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $dest)) { $rn = "\r\n"; } else { $rn = "\n"; } $My_Header = "<html><head></head><body>"; $My_Footer = "</body></html>"; $My_Messag = $My_Header.$f_Body.$My_Footer; $boundary = md5(uniqid(microtime(), TRUE)); $titre = $f_Sujet; //création du Header $headers = "From: Newsletter <newsletter@sivop.com>".$rn; $headers .= 'Mime-Version: 1.0'.$rn; $headers .= 'Content-Type: multipart/mixed;boundary='.$boundary.$rn; $headers .= $rn; // Creation du message a envoyer // ----------------------------- $corps = '--' . $boundary .$rn; $corps .= 'Content-type: text/html; charset=ISO-8859-15' .$rn.$rn; $corps .= $My_Messag.$rn; //------------------------------------------------ // le temps des tests : //------------------------------------------------ echo "<pre> Message <br>".$My_Messag."</pre>"; echo "<pre> Corps <br>".$corps."</pre>"; //------------------------------------------------ if(mail($dest, $titre, $corps, $headers)){ $ok_mail="true"; }else{ $erreur.="<div class='DivError TexteError'><li>Erreur d'envois</div>"; } // Fin if(mail } // Fin while($data } // Fin if($erreur } // Fin if(isset($_POST ?>
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
8 janv. 2015 à 18:06
8 janv. 2015 à 18:06
Waw ! C'est chaud !
Toujours pareil, je reçois toujours en texte.
Dis, tu penses pas que c'est dû au $_POST ?
Toujours pareil, je reçois toujours en texte.
Dis, tu penses pas que c'est dû au $_POST ?
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
8 janv. 2015 à 18:16
8 janv. 2015 à 18:16
Et que donne les ECHO que j'ai ajouté au code ???
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
8 janv. 2015 à 18:19
8 janv. 2015 à 18:19
Voici le message envoyé :
Voici le résultat de l'echo :
<strong>Bonjour à tous !</strong>
Voici le résultat de l'echo :
Body
Bonjour à tous !
Message
Bonjour à tous !
Corps
--3e8d1daed433fedd5cbda4fa3642641d
Content-type: text/html; charset=ISO-8859-15
Bonjour à tous !
Message
Bonjour à tous !
Corps
--9b76ab12e6305f13e3163059d38487cb
Content-type: text/html; charset=ISO-8859-15
Bonjour à tous !
La lettre d'information a été envoyée avec succès !
--9b76ab12e6305f13e3163059d38487cb
Content-type: text/html; charset=ISO-8859-15
Bonjour à tous !
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
8 janv. 2015 à 18:25
8 janv. 2015 à 18:25
Bref... Il n'y a, null part, du HTML dans ton message ....
$f_Body .. contient uniquement "Bonjour à tous !"
Donc tu ne risque pas d'avoir du HTML dans tes mails....
Le souci se situe donc lors de la génération du POST.
$f_Body .. contient uniquement "Bonjour à tous !"
Donc tu ne risque pas d'avoir du HTML dans tes mails....
Le souci se situe donc lors de la génération du POST.
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
8 janv. 2015 à 18:36
8 janv. 2015 à 18:36
Dans le code source on trouve bien :
Et la zone de texte $f_Body lors de l'affichage contient
Il concatènera donc :
Pour m'afficher en gras Bonjour à tous !
C'est bien la logique non ?
$My_Header = "<html><head></head><body>";
$My_Footer = "</body></html>";
$My_Messag = $My_Header.$f_Body.$My_Footer;
Et la zone de texte $f_Body lors de l'affichage contient
<strong>Bonjour à tous !</strong>
Il concatènera donc :
<html><head></head><body>
<strong>Bonjour à tous !</strong>
</body></html>
Pour m'afficher en gras Bonjour à tous !
C'est bien la logique non ?
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
8 janv. 2015 à 18:45
8 janv. 2015 à 18:45
Heuu....
Tu as vu que tu utilisais la fonction strip_tags lorsque tu génère les variables issues de ton POST???
... donc.. normal que tu n'aies pas de balises HTML ...... \o/
Tu as vu que tu utilisais la fonction strip_tags lorsque tu génère les variables issues de ton POST???
strip_tags -- Supprime les balises HTML et PHP d'une chaîne
while(list($var,$val)=each($_POST)){ if(!is_array($val)){$$var=strip_tags($val); }else{ while(list($arvar,$arval)=each($val)){ $$var[$arvar]=strip_tags($arval); } } }
... donc.. normal que tu n'aies pas de balises HTML ...... \o/
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
8 janv. 2015 à 21:14
8 janv. 2015 à 21:14
Tu as raison, le strip_tags supprime effectivement les balises html et php.
Là je reçois <strong>Bonjour à tous !</strong> dans mon mail :D mais pas en affichage html.
Là je reçois <strong>Bonjour à tous !</strong> dans mon mail :D mais pas en affichage html.
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
9 janv. 2015 à 13:26
9 janv. 2015 à 13:26
J'ai réussiiiiiiiiiiiiiiiiiiii ! Grâce à toi en tout cas :D
if(isset($_POST['EnvoyerMail'])){$erreur=""; while(list($var,$val)=each($_POST)){ if(!is_array($val)){$$var=$val; }else{ while(list($arvar,$arval)=each($val)){ $$var[$arvar]=$arval; } } } //$f_Sujet = trim(preg_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_Sujet)); $f_Sujet = utf8_decode($f_Sujet); if(strlen($f_Sujet)<2) {$erreur.="<li><strong>Sujet du message</strong> vide"; $errf_Sujet=1;} if(strlen($f_Body)<2) {$erreur.="<li><strong>Corps du message</strong> vide"; $errf_Body=1;} if($erreur==""){ $db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS); mysql_select_db(MYSQL_BASE,$db); $sql = 'SELECT * FROM tb_newsletter_adresses'; $req = mysql_query($sql) or die($sql."<br />".mysql_error()); while($data = mysql_fetch_assoc($req)){ $dest= $data['Newsletter'].","; if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $dest)) {$rn = "\r\n";} else {$rn = "\n";} $bound = "-----=".md5(rand()); $titre = $f_Sujet; $entete = "From: SIVOP Newsletter <newsletter@sivop.com>".$rn; $entete.= "MIME-Version: 1.0".$rn; $entete.= "Content-Type: multipart/mixed;".$rn." boundary=\"$bound\"".$rn; $corps= $rn."--".$bound.$rn; $corps.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$rn; $corps.= "Content-Transfer-Encoding: 8bit".$rn; $corps.= $rn.$f_Body.$rn; $corps.= $rn."--".$bound."--".$rn; $corps.= $rn."--".$bound."--".$rn; if(mail($dest, $titre, $corps, $entete)){$ok_mail="true";}else{$erreur.="<div class='DivError TexteError'><li>Erreur d'envois</div>";}}}}