Rechercher : dans
Par :

PHPMAILER envoi mail en double:

Dernière réponse le 5 oct 2007 à 15:46:14 bouquet92, le 26 nov 2006 à 18:59:18 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « PHPMAILER envoi mail en double: » dans :
[Langages] Envoyer un mail avec pièce jointe VoirLes mails, tout comme les pages web, sont livrés avec des en-têtes (headers en anglais). Ces en-têtes servent à donner quelques détails nécessaires comme l'adresse du destinataire, celle de l'envoyeur, la date de l'envoi, le sujet du mail etc. Elles...
[PHP] Fonction mail() VoirLa fonction mail() est bloquée chez certains des hébergeurs gratuits pour des raisons de sécurité (afin d'éviter le spam notamment), l'adresse ip de la machine qui a demandé le script sera alors indiquée dans le header 'X-MM-Mail-From-IP'. renseignez...

1

Mense, le 9 jan 2007 à 14:49:07

Personne n'a la réponse ?
J'ai le même problème.

Merci

Répondre à Mense

2

Tony, le 21 fév 2007 à 22:47:17

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!

Répondre à Tony

3

CoreDump, le 9 mar 2007 à 18:58:15

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 !

Répondre à CoreDump

4

Philippe, le 2 avr 2007 à 23:05:52

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 !

Répondre à Philippe

5

 kasp, le 5 oct 2007 à 15:46:14

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.

Répondre à kasp
Collection CommentÇaMarche.net