par
Nestecha » 08 nov. 2014, 02:57
Oui sûrement dans le foreach.
En fait dans ton foreach là, tu dis : "pour chaque adresse cochée, ajoute cette adresse dans la liste des adresses à ajouter (jusqu'ici tout va bien), puis envoi un mail à toutes les adresses cochées jusqu'ici (pas bon !)".
Enfin je crois, je ne connais pas bien PHPMailer, mais j'imagine que $mail c'est un objet qui va contenir la ou les adresses. Donc tu ajoutes les adresses, puis en dehors du foreach tu fais un send, et ça devrait envoyer à toutes les adresses d'un coup, mais une seule fois !
Donc c'est normal qu'il en envoi 100 au premier, puisqu'il reste 99 + l'adresse du premier par lesquelles il boucle. Lors du deuxième passage il n'en reste que 98 + l'adresse du second (la première est terminée).
Donc voilà ton code comme il devrait être (selon moi) :
<?php
// On va chercher la définition de la classe
require('../PHPMailer/class.phpmailer.php');
// On créé une nouvelle instance de la classe
$mail = new PHPMailer();
require ("../Connexion/config.php");
$expediteur = "[email protected]";
if(isset($_POST['envoi']))
{
$sujet=stripslashes($_POST["sujet"]);
$corps = stripslashes($_POST["corps"]);
$selection=$_POST["selection"];
if (empty($_POST["selection"]))
{
echo "<h3 align=center><strong>Vous devez remplir toutes les cases</h3>";
echo "<p align=center><a href=javascript:history.back(-1)>Retourner sur la Page Message</a></p>";
}
else
{
//$fichier = $_FILES['fichier_joint']['name'];
//echo "$fichier";
echo "test";
// De qui vient le message, e-mail puis nom
$mail->From = $expediteur;
$mail->FromName = "Herve Dunoyer";
// Définition du sujet/objet
$mail->Subject = $sujet;
// On définit le corps du message
$mail->Body = $corps;
// On met notre CV en pièce jointe
//$mail->AddAttachment('Compo_Sacs.jpg');
// Pour finir, on envoie l'e-mail
foreach ($selection as $choix)
{
// mail($choix, $sujet, $msg, "Reply-to: $expediteur\r\nFrom: $expediteur\r\n".$header);
// Il reste encore à ajouter au moins un destinataire
$mail->AddAddress($choix, "HeyHo");
// Pour finir, on envoie l'e-mail
}
$mail->send();
echo "<h3 align=center><strong>Votre Newsletter a bien été envoyée</h3>";
echo '<p align="center"><a href="javascript:history.back(-1)">Retourner sur la Page Message</a></p>';
}
//Fin POST
}
Oui sûrement dans le foreach.
En fait dans ton foreach là, tu dis : "pour chaque adresse cochée, ajoute cette adresse dans la liste des adresses à ajouter (jusqu'ici tout va bien), puis envoi un mail à toutes les adresses cochées jusqu'ici (pas bon !)".
Enfin je crois, je ne connais pas bien PHPMailer, mais j'imagine que $mail c'est un objet qui va contenir la ou les adresses. Donc tu ajoutes les adresses, puis en dehors du foreach tu fais un send, et ça devrait envoyer à toutes les adresses d'un coup, mais une seule fois !
Donc c'est normal qu'il en envoi 100 au premier, puisqu'il reste 99 + l'adresse du premier par lesquelles il boucle. Lors du deuxième passage il n'en reste que 98 + l'adresse du second (la première est terminée).
Donc voilà ton code comme il devrait être (selon moi) :
[php]<?php
// On va chercher la définition de la classe
require('../PHPMailer/class.phpmailer.php');
// On créé une nouvelle instance de la classe
$mail = new PHPMailer();
require ("../Connexion/config.php");
$expediteur = "
[email protected]";
if(isset($_POST['envoi']))
{
$sujet=stripslashes($_POST["sujet"]);
$corps = stripslashes($_POST["corps"]);
$selection=$_POST["selection"];
if (empty($_POST["selection"]))
{
echo "<h3 align=center><strong>Vous devez remplir toutes les cases</h3>";
echo "<p align=center><a href=javascript:history.back(-1)>Retourner sur la Page Message</a></p>";
}
else
{
//$fichier = $_FILES['fichier_joint']['name'];
//echo "$fichier";
echo "test";
// De qui vient le message, e-mail puis nom
$mail->From = $expediteur;
$mail->FromName = "Herve Dunoyer";
// Définition du sujet/objet
$mail->Subject = $sujet;
// On définit le corps du message
$mail->Body = $corps;
// On met notre CV en pièce jointe
//$mail->AddAttachment('Compo_Sacs.jpg');
// Pour finir, on envoie l'e-mail
foreach ($selection as $choix)
{
// mail($choix, $sujet, $msg, "Reply-to: $expediteur\r\nFrom: $expediteur\r\n".$header);
// Il reste encore à ajouter au moins un destinataire
$mail->AddAddress($choix, "HeyHo");
// Pour finir, on envoie l'e-mail
}
$mail->send();
echo "<h3 align=center><strong>Votre Newsletter a bien été envoyée</h3>";
echo '<p align="center"><a href="javascript:history.back(-1)">Retourner sur la Page Message</a></p>';
}
//Fin POST
}[/php]