Probléme incompréhensible PHP mail()
Manoel
-
Manoel -
Manoel -
Bonjour,
J’ai un problème que je ne comprends pas.
J'ai l'habitude que faire 1 fois tout les 2 mois du mailing via un petit programme de mon cru.
J'ai donc créé mon mail à envoyer et zou je test sur mon adresse pour voir si tout va bien. Hélas ce mail ne me parvient pas, j'essaie avec d'autre adresse toujours pas. Je relis mon mail qui malgré mon HTML pas impeccable ne devrait pas poser de problème.
Après bien des galères je décide de partir d'un mail que j'ai déjà envoyé par le passé et qui marche encore (je l'ai retesté).
Au fur et à mesure je supprime l'ancien message et le remplace (tout en faisant des tests pour vérifier que ça fonctionne toujours).
Après une prise de tête voici le résultat : si je supprime un mot, ici "mercredi" que j'ai mis en fin de mail, le mail ne part pas °°
Les tests, que je fais, sont en local via easyPHP, la partie du php.ini où il faut renseigner le smtp est ok.
vous trouverez mon code ici : http://epj.fr/bug_mystique/mailing.zip
3 impressions écrans :
http://epj.fr/bug_mystique/ma_page.jpg
http://epj.fr/bug_mystique/mail_envoye.jpg
http://epj.fr/bug_mystique/mail_recu.jpg
Si j'enlève "mercredi" je ne reçois pas le mail.
Je ne comprend absolument pas pourquoi du texte brut à cet effet.
Voici le mail en html
Le mot magique est juste 4 lignes au dessus : mercredi.
Voici le code php
J’ai un problème que je ne comprends pas.
J'ai l'habitude que faire 1 fois tout les 2 mois du mailing via un petit programme de mon cru.
J'ai donc créé mon mail à envoyer et zou je test sur mon adresse pour voir si tout va bien. Hélas ce mail ne me parvient pas, j'essaie avec d'autre adresse toujours pas. Je relis mon mail qui malgré mon HTML pas impeccable ne devrait pas poser de problème.
Après bien des galères je décide de partir d'un mail que j'ai déjà envoyé par le passé et qui marche encore (je l'ai retesté).
Au fur et à mesure je supprime l'ancien message et le remplace (tout en faisant des tests pour vérifier que ça fonctionne toujours).
Après une prise de tête voici le résultat : si je supprime un mot, ici "mercredi" que j'ai mis en fin de mail, le mail ne part pas °°
Les tests, que je fais, sont en local via easyPHP, la partie du php.ini où il faut renseigner le smtp est ok.
vous trouverez mon code ici : http://epj.fr/bug_mystique/mailing.zip
3 impressions écrans :
http://epj.fr/bug_mystique/ma_page.jpg
http://epj.fr/bug_mystique/mail_envoye.jpg
http://epj.fr/bug_mystique/mail_recu.jpg
Si j'enlève "mercredi" je ne reçois pas le mail.
Je ne comprend absolument pas pourquoi du texte brut à cet effet.
Voici le mail en html
<html> <head> <title>Espace Pluriel Jeunes d'Istres</title> <style type="text/css"> body { background-color:#ddffdd; } h1 { text-align:center; color:#9400D3; } h2 { font-size: 22px; color:#0000CD; } h3 { font-size: 22px; color:#008800; font-weight: bold; text-align:left; } a { text-decoration:none; color: #ff6600; font-weight: bold; } a:link { text-decoration:none; color: #ff6600; font-weight: bold; } a:visited { color: #ff6600; } a:hover { color: #228B22; font-weight: bold; } p#note { text-align:center; font-size: 10px; } </style> </head> <body> <p id="note">Si vous avez des difficultés pour visualiser ce message, <a href="http://epj.fr/mailing/mail_15_ans_epj.html">cliquez ici</a></p> <div style="background-color:ffffdd; width:800px; padding:10px;"> <a href="http://epj.fr/"><img src="http://epj.fr/images/charte/bandeau.jpg" width="800px" border="0px"></a><br> <h1>Les 15 ans de l'EPJ</h1> <h3><img src="http://epj.fr/images/charte/puce_epj.png" alt="puce">Dès maintenant :</h3> <p> Tu peux venir voir <b>l'exposition "tu veux ma photo"</b> réalisée en 1994.<br> Viens reconnaitre tes amis. </p> <br> <h3><img src="http://epj.fr/images/charte/puce_epj.png" alt="puce"><u>On t'invite</u> le jeudi 12 février pour fêter l'anniversaire d'EPJ</h3> <p> <b>A partir de 18h :</b><br> <img src="http://epj.fr/images/charte/puce.png" alt="puce"> Nous exposerons "tu veux ma photo" réalisée cette année. Les personnes ayant participées pourront récupérer leur photo.<br> <img src="http://epj.fr/images/charte/puce.png" alt="puce"> Concert<br> <img src="http://epj.fr/images/charte/puce.png" alt="puce"> Feu d'artifice<br> <img src="http://epj.fr/images/charte/puce.png" alt="puce"> Apéritif<br> <img src="http://epj.fr/images/charte/puce.png" alt="puce"> Tirage au sort pour les séjours à gagner.<br> </p> <br> A très bientôt,<br> L'équipe EPJ<br> <br> <div align="center"> <a href="http://epj.fr/index2.php"> Plus d'infos sur epj.fr<br> <img src="http://epj.fr/images/logo.jpg" alt="Logo de l'EPJ"><br> </a> </div> <br> mercredi </div> </body> </html>
Le mot magique est juste 4 lignes au dessus : mercredi.
Voici le code php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Mailing</title> </head> <body> <?php if (isset($_GET["confirm"])) { if($_GET["confirm"]=="oui") { /************** Pour tester **************************/ $result[0]["mail_per"]="epj@wanadoo.fr"; // $result[1]["mail_per"]="test3@neuf.fr"; // $result[2]["mail_per"]="test2@hotmail.fr"; /******************************************************/ for ($i=0;$i<count($result);$i++) { // Gestion destinataire $to = $result[$i]["mail_per"]; // Sujet $subject = "[EPJ] Espace Pluriel Jeunes d'Istres"; // message $message = file_get_contents("mail.html"); // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; // En-têtes additionnels $headers .= 'From: epj@wanadoo.fr' . "\r\n"; // Envoi if (mail($to, $subject, $message, $headers)) { echo $i." ".$to."<br>"; echo "<p align=\"center\"> <b>Mailing effectué</b> </p>"; } else { echo $i." ".$to."<br>"; echo "<p align=\"center\"> <b>Erreur</b> </p>"; } } } ?> <?php exit; } ?> <br><br><br><br><br> <p align="center"> Etes vous sûr de vouloir envoyer <a href="mail.html" target="Mail">ce mail</a> à tous les adhérents ? </p><br> <p align="center"> <a href="mailing.php?confirm=oui&retour=<?php echo $_SESSION["retour"]; ?>">Oui</a> <a href="retour.html">Non</a></p> </p> </boby> </html>
A voir également:
- Probléme incompréhensible PHP mail()
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
- Créer une adresse mail hotmail - Guide
- Comment télécharger un mail - Guide
- Cegetel mail ✓ - Forum Mail
3 réponses
Certes c'est une solution, mais ce que je ne comprend pas c'est que j'ai déjà fait plusieurs mailing avec cette fonction sans aucun problème.
Et encore plus incompréhensible : c'est du texte brut qui me fait bugger le truc... si c'était du code ... si je recevais le mail même de façon horrible je comprendrais.
Et encore plus incompréhensible : c'est du texte brut qui me fait bugger le truc... si c'était du code ... si je recevais le mail même de façon horrible je comprendrais.
mmmmh, je ne comprends pas l'intérêt de :
> le $_SESSION['retour'] qui, n'étant pas défini, renvoie une erreur (dans la barre d'adresse, c'est un "Warning" qui est passé :-|)
> le tableau $result à deux dimensions alors qu'une suffit
(Pbs mis en gras ci-dessous)
Si ceux-ci n'ont aucune raison d'être, autant les enlever.
Sinon j'ai corrigé deux trois bricoles. Il doit bien y avoir quelques soucis HTML mais bon, ça devrait passer.
> le $_SESSION['retour'] qui, n'étant pas défini, renvoie une erreur (dans la barre d'adresse, c'est un "Warning" qui est passé :-|)
> le tableau $result à deux dimensions alors qu'une suffit
(Pbs mis en gras ci-dessous)
Si ceux-ci n'ont aucune raison d'être, autant les enlever.
Sinon j'ai corrigé deux trois bricoles. Il doit bien y avoir quelques soucis HTML mais bon, ça devrait passer.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Mailing</title> </head> <body> <?php if (isset($_GET["confirm"])) { if($_GET["confirm"]=="oui") { /************** Pour tester **************************/ $result[0]["mail_per"]="test@example.org"; // $result[1]["mail_per"]="test3@neuf.fr"; // $result[2]["mail_per"]="test2@hotmail.fr"; /******************************************************/ // Sujet $subject = "[EPJ] Espace Pluriel Jeunes d'Istres"; // message $message = file_get_contents("mail.html"); for ($i=0;$i<count($result);$i++) { // Gestion destinataire $to = $result[$i]["mail_per"]; // Pour envoyer un mail HTML, l'en-t�te Content-type doit �tre d�fini $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; // En-t�tes additionnels $headers .= 'From: epj@wanadoo.fr' . "\r\n"; // Envoi if (mail($to, $subject, $message, $headers)) { echo $i." ".$to."<br>"; echo "<p align=\"center\"> <b>Mailing effectué</b> </p>"; } else { echo $i." ".$to."<br>"; echo "<p align=\"center\"> <b>Erreur</b> </p>"; } } } } else { echo '<p align="center"> Etes vous sûr de vouloir envoyer <a href="mail.html" target="Mail">ce mail</a> à tous les adhérents ? </p><br> <p align="center"> <a href="mailing.php?confirm=oui&retour='.$_SESSION["retour"].'">Oui</a> <a href="retour.html">Non</a></p> </p>'; } ?> </body> </html>
Les 2 soucis que tu as noté sont dû au fait que cette page est normalement intégrée à un programme interne, avec des variables de session ... Pour plus de lisibilité j'ai enlevé la gestion des droits et d'autres trucs du même genre. C'est donc un oubli de ma part :/
Le tableau à 2 dimensions est là pour représenter la requête sql renvoyant une liste d'adresse mail.
Sinon je testerais ça mardi au boulot et je te tiens au courant.
En tout cas merci pour le temps que tu m'as consacré !
Ainsi que la rapidité (j'en suis agréablement surpris) :)
Bon week end
Le tableau à 2 dimensions est là pour représenter la requête sql renvoyant une liste d'adresse mail.
Sinon je testerais ça mardi au boulot et je te tiens au courant.
En tout cas merci pour le temps que tu m'as consacré !
Ainsi que la rapidité (j'en suis agréablement surpris) :)
Bon week end