PHPMAILER envoi mail en double:

Fermé
bouquet92 Messages postés 1 Date d'inscription dimanche 26 novembre 2006 Statut Membre Dernière intervention 26 novembre 2006 - 26 nov. 2006 à 18:59
 kasp - 5 oct. 2007 à 15:46
Bonjour, j'essaye d'envoyer via phpmailer des mails selon des cas précis. Mon probleme est que ces mails pour une raison inconnue sont envoyés en double, je ne comprend pas du tout pourquoi. Est ce que quelqu'un peut m'aider?

Voici le code :

require("../inc/class.phpmailer.php"); // fonction de mailing
		
		$mail = new PHPMailer();
		$mail->IsSMTP();
		$mail->SMTPAuth = false;
		$mail->From = "yyy@xxxxx.com";
		$mail->FromName = "xxxxx";
		
		//$mail->AddAddress($email);
		//$mail->AddBCC("xxx@xxx.com");
		
		
		$mail->AddReplyTo("yyyyy@xxxx.com", "xxxxx");
		$mail->WordWrap = 50;
		$mail->IsHTML(true);
		$mail->Subject = "Acces - xxxxxx";
		$mail->Body    = $message_HTML;
		//$mail->AltBody = $message_plain_text;

if($mail->Send()){
	header("Location:liste.php");
		}else{
		echo "erreur envoi mail!";
		};

Merci d'avance à tous

Philippe.

5 réponses

Rajoute un champ dans la base à coté de l'email, un champ envoyé ou non.
Avant de lancer ta procédure d'envoi tu remets tout à zéro, et à chaque envoi d'email il met à jour la base pour dire que l'email a bien été envoyé pour cet utilisateur.
Et quand ton script se lance, il envoi le mail, à tous ceux qui n'ont pas encore recu d'envoi d'email.
2
Personne n'a la réponse ?
J'ai le même problème.

Merci
0
Moi aussi, j'ai le même problème. J'essaye d'envoyer des E-cartes par email depuis mon site (http://tonyl87.free.fr) et ça marche... a part que les cartes arrivent en double presque toujours (même une fois en triple).
J'ai essayé d'empêcher ça par une session utilisateur en comptant le temps écoulé depuis le dernier envoi, et en interdisant plus d'un envoi par minute, pour être sur que le code ne serait pas exécuté une deuxième fois. Le résultat n'est pas glorieux! je reçoit un seul email... puis environ 3min plus tard j'en reçoit un deuxième identique!! je ne comprend pas comment le code peu s'exécuter comme ça... Si vous avez une réponse, je suis preneur!
0
Même problème pour moi !

Si j'appelle la fonction mail() 1 seule fois en passant les paramètres sans variables intermédiaires ca marche :

mail($row['mail'], "sujet du message", "texte du message","From: adresse@domaine.fr\n");


par contre dans une boucle WHILE qui va rechercher X adresses dans la base ça envoit tous les mails en double :

while ($row=mysql_fetch_array($result))
{   if ( mail($row['mail'], $objet, $message, $headers) ) echo $row['mail']."&nbsp;&nbsp;OK<br>";
    else echo $row['mail']."&nbsp;&nbsp;ERREUR<br>" ;
}


QQun a une idée ?
Merci !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bon, moi aussi, j'ai le problème, mais pas la solution ultime... Je suis hébergé chez ovh, et le service technique m'a répondu qu'il est probable que ce soit dû au temps d'exécution du script. En effet, au bout de 30 sec (variable suivant les hébergeurs), le script meure. Le navigateur continue à solliciter le serveur, et hop, c'est reparti ! Si, entre temps, la mise en file d'attente des mails a eu lieu sans réponse du serveur, la boucle repart et renvoie. J'ai déjà fait un envoi en triple, dans le cas de 1200 adresses mails.... Les solutions ? Avoir un serveur dédié et autoriser le script à dépasser le temps d'exécution maximum, ou sinon, trouver l'astuce pour découper les envois en paquet de 100, par exemple. C'est à dire que le script lance les cent premières adresses, meure;.. ressuscite ! et repart à partir de la 101ème. Comme tout être mortel, c'est la phase de résurrection du script (et pas du christ...!) qui me pose problème...
Si quelqu'un a l'astuce ! (si si, ça se fait, je l'ai déjà lu, mais les personnes qui en parlaient n'ont pas eu la présence d'esprit d'expliquer comment faire...)

Bon courage !
0