Mailing foreach qui plante après 1er envoi

Résolu
danielos77 Messages postés 108 Date d'inscription   Statut Membre Dernière intervention   -  
danielos77 Messages postés 108 Date d'inscription   Statut Membre Dernière intervention   -

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 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

bonjour,

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

1
danielos77 Messages postés 108 Date d'inscription   Statut Membre Dernière intervention   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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

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

print_r($headers);
1
danielos77 Messages postés 108 Date d'inscription   Statut Membre Dernière intervention   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