Probléme incompréhensible PHP mail()

Fermé
Manoel - 17 janv. 2009 à 13:30
 Manoel - 21 janv. 2009 à 11:20
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

<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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
   <a href="retour.html">Non</a></p>
</p>

</boby>
</html>
A voir également:

3 réponses

afrodje Messages postés 759 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 22 janvier 2014 168
17 janv. 2009 à 13:35
Pourquoi n'essaye tu pas avec phpmaileur qui est très simple à utiliser.
0
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.
0
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 330
17 janv. 2009 à 14:12
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.
<!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&#65533;te Content-type doit &#65533;tre d&#65533;fini
       $headers  = 'MIME-Version: 1.0' . "\r\n";
       $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

       // En-t&#65533;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&amp;retour='.$_SESSION["retour"].'">Oui</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
   <a href="retour.html">Non</a></p>
</p>';
    }
?>
</body>
</html>
0
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
0
Bonjour,

Les quelques changements n'ont pas résolu mon bug :/
0