Mailing foreach qui plante après 1er envoi

Résolu
danielos77 Messages postés 109 Statut Membre -  
danielos77 Messages postés 109 Statut Membre -

Bonjour,

J'ai ce code qui ne fonctionne qu'avec le 1er enregistrement et qui ensuite s'arrête en m'indiquant "Erreur lors de l'envoi du mail à ".$Mail"

Je met le champ actif à "Non" pour le mail envoyé et en relançant la page, elle envoie à nouveau le mail suivant sans plus.

d'où cela pourrait-il venir ?

$sql = 'SELECT Mail FROM Mailing where Actif = "OUI"'; 
try {
  $table = $bdd->prepare($sql);
  $table->execute();
  $table_bdd = $table->fetchAll(); 
} catch (Exception $e) {
  echo "Erreur : " . $e->getMessage();
}

foreach ($table_bdd as $K => $V) {
  $Mail = $V['Mail'];

//affiche le mail traité
  echo "<br><pre>";
  echo $Mail;
  echo "</pre>";

     // destinataire
     $to  = $Mail; 

     // Sujet
     $subject = 'sujet';

     // message
     $message = '
     <html>
      <head>
       <title>titre</title>
      </head>
      <body>
        message   		
      </body>
     </html>
     ';

     $headers[] = 'MIME-Version: 1.0';
     $headers[] = 'Content-type: text/html; charset=utf8';
     $headers[] = 'From: adresse envoi';

     // Envoi
  if(!mail($to, $subject, $message, implode("\r\n", $headers))){ 
    echo "<br>Erreur lors de l'envoi du mail à ".$Mail;
  }else{
    echo "<br>L'email a été envoyé.";
  }
}

?>

Merci d'avance à celui ou celle qui m'expliquera.

Daniel
Windows / Firefox 121.0

3 réponses

yg_be Messages postés 24281 Statut Contributeur Ambassadeur 1 584
 

bonjour,

moi je commencerais par sortir les lignes 21 à 38 de la boucle.

1
danielos77 Messages postés 109 Statut Membre 2
 

Bonjour yg_be,

Impressionnant !

Effectivement les éléments du mail défini en amont de la boucle, il ne reste plus dans la boucle que l'envoi pour chaque adresse et ça change tout....
Pourquoi ??? car pour un néophyte comme moi en lisant (du moins en essayant de traduire) le code cela semblait bon.
Bon, j'espère garder à l'esprit que ce qui est "fixe" est à sortir des boucles et que celles-ci doivent s'appliquer qu'à l'élément variable.

Bon am et merci encore.
Daniel

0
yg_be Messages postés 24281 Statut Contributeur 1 584
 

Pour comprendre, reprends ton code de départ et ajoute, dans la boucle:

print_r($headers);
1
danielos77 Messages postés 109 Statut Membre 2
 

Ok, Les headers se recopient dans le headers => erreur. Il aurait fallu vider le header avant de retraiter un nouvel enregistrement ou sinon... sortir la structure du mail de la boucle ... et là on dit merci yg_be.

0