Problème multi-destinataires avec PHPMailer

Petit nouveau ! | 4 Messages

31 oct. 2016, 10:35

Bonjour à tous,

je suis un petit nouveau ici et je débute également le codage PHP.
Je bloque sur une problématique concernant l'envoie de mails via phpmailer.
J'ai sur une base SQL une liste d'une cinquantaine d'adresse mails.
Mon code me permet normalement de requête cette liste pour ensuite envoyer un même mail à l'ensemble des destinataires.
Le problème c'est que les destinataires ont reçu plusieurs mail alors que je n'ai effectué qu'un seul envoi...j'imagine que quelque chose cloche dans mon code mais je ne vois pas.

Pouvez vous m'aider? Merci.

Ci dessous un extrait du code
<?php

include("config2.php");

$q = mysql_query("SELECT Mail from table_sms"); 
	 	
mysql_close();  // on ferme la connexion 

?>




<?php 
// connexion à la base
include("config.php");


// on ferme la connexion à mysql
mysql_close();


require('phpmailer/class.phpmailer.php'); 
$headers = "MIME-Version: 1.0"."\r\n";
$headers .= "Content-type: text/html; charset=utf-8"."\r\n";
 
$mail = new PHPMailer();
$mail->Host = 'smtp.domaine.fr';
$mail->SMTPAuth   = false;
$mail->Port = 25; // Par défaut
$mail->CharSet = 'utf-8';
// Expéditeur
$mail->SetFrom(''.$guichet.'');

// Destinataire
while( $r=mysql_fetch_array($q) )
{
    $email = $r['Mail'];  
    for($i=0;$i<count($email);$i++){
   
   $mail->AddAddress($email);
};
}



// Objet
$mail->Subject = 'PGR DAO' ;
 
$mail->MsgHTML(''.$_POST['texte_mail'].'<br><br>'.$url.'');
 
// Envoi du mail avec gestion des erreurs
if(!$mail->Send()) {
  echo 'Erreur : ' . $mail->ErrorInfo;
} else {
	$message='Mail envoyé'; 
  echo '<script type="text/javascript">window.alert("'.$message.'");</script>'; 
 
  echo  header('Location: module_sms.php'); 
} 

?>
Modifié en dernier par olivier147 le 31 oct. 2016, 18:13, modifié 1 fois.

Mammouth du PHP | 1967 Messages

31 oct. 2016, 11:57

Que cherche tu à faire avec ton for dans le while ?

à mon avis si tu retire cette boucle for, il n'y aura plus qu'un mail par destinataire et non pas autant qu'il y a de caractère dans l'adresse mail.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Petit nouveau ! | 4 Messages

31 oct. 2016, 14:24

Bonjour Spols,

Je me suis sûrement mélangé les crayons, je prends des codes à droite à gauche puis les combine pour voir si ça fonctionne...il y à donc certainement des erreurs.
Je cherche à envoyer le même mail à tous les destinataires renseignés dans ma base. Là en l'occurrence j'en ai 47, je veux donc envoyer le même mail aux 47 personnes.

Mammouth du PHP | 1967 Messages

31 oct. 2016, 14:47

change ceci
// Destinataire
while( $r=mysql_fetch_array($q) )
{
    $email = $r['Mail'];  
    for($i=0;$i<count($email);$i++){
   
   $mail->AddAddress($email);
};
}
en ceci
// Destinataire
while( $r=mysql_fetch_array($q) )
{
    $email = $r['Mail'];  
    $mail->AddAddress($email);
}
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Petit nouveau ! | 4 Messages

31 oct. 2016, 17:36

je te remercie, ça semble fonctionnait nickel

Petit nouveau ! | 4 Messages

03 nov. 2016, 10:44

Bon, j'ai crié victoire trop vite, le soucis subsiste...
Ça se passe de la même manière que la première fois, il envoie le mail en double instantanément puis deux autres toutes les 5 minutes...incompréhensible.