Mail : envoi multiple via une boucle

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Mail : envoi multiple via une boucle

par Megadeth » 06 mai 2009, 12:06

3 :lol:

par AB » 05 mai 2009, 17:12

Cela vient peut-être du nombre de mail que tu essaies d'envoyer successivement ce qui fait saturer le serveur. Combien de mail au total ?

par Megadeth » 05 mai 2009, 14:24

Re,

J'avais déjà fait ce test mais j'ai repris ton exemple et rien.

Sous la ligne du dessous j'ai mis une adresse en interne et ça passe. Je pense maintenant à un problème smtp plutôt qu'autre chose. Je n'ai pas la main sur le serveur et c'est vrai que jusqu'alors je n'avais jamais envoyé de mail autre que vers des boites en interne, sacré paramétrage. J'm'en choppé un admin serveur :twisted:

Vous avez une piste ? Savoir où regarder ? Où taper :lol:

Mega
;)

par D4Y » 05 mai 2009, 14:00

je ne pense pas que ca change grand chose mais essaie

mail($destinataire,"test", "test");

par Megadeth » 05 mai 2009, 13:51

Désolé, ce sont les habitudes du .net Smile
"désolé" -> Pas de souci tu rigoles, merci beaucoup pour ton apport. J'ai fait aussi quelques heures sur asp.net. ^^
Plus j'avance et plus je me rends compte que j'ai plutôt des lacunes sql...
si tu fais un echo $destinataires dans ta boucle , les adresses emails sont correctes ?
Oui tout à fait, c'est ça le pire, l'echo renvoie bien mes adresses mail. :cry:

Ca viendrait du serveur ? Pourtant je n'ai jamais eu de souci avec ce dernier pour l'envoi de mail...

En fait je reçois les mails vers des adresses en interne mais quand c'est vers l'extérieur ça ne marche plus...

Cordialement,

Mega
;)

par Sodams » 05 mai 2009, 13:11


Modif de 12h25

J'ai changé les += par des .= et l'erreur a disparu mais les mails n'arrivent toujours pas :?



Mega
;)
Désolé, ce sont les habitudes du .net :-)

par D4Y » 05 mai 2009, 13:09

si tu fais un echo $destinataires dans ta boucle , les adresses emails sont correctes ?

par Megadeth » 05 mai 2009, 11:51

Utilise le foreach pour créé ta requête.

Une fois la requête créée (et donc le foreach terminé) tu n'as plus l'exécuté.
$mail = 0;

// Création de la requête
$q = "SELECT * FROM utilisateurs WHERE id_utilisateur  in (";
foreach($_POST['cac'] as $key => $value) 
{ 
    // Ajout de l'ID
    $q += $value.",";
} 

// On retire la dernière virgule
$q = substr($q, 0, -1);

// On termine la requête
$q += ");";

$r = mysql_query($q); 
while($row=mysql_fetch_array($r))
{ 
    $destinataire = $row["mail_utilisateur"]; 
    mail("$destinataire","Avis à populous", $_SESSION["log"]. " a posté un message pour vous"); 
    $mail++; 
}
Merci d'avoir pris le temps de m'expliquer et même plus (cette approche sql), mais malheureusement j'ai une erreur :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /.../.../.../admin.php on line 79




Modif de 12h25

J'ai changé les += par des .= et l'erreur a disparu mais les mails n'arrivent toujours pas :?



Mega
;)

par iclo » 05 mai 2009, 11:25

Pour ce genre de problème, il faut explorer plusieurs pistes, notamment:
- le mail n'est pas parti
- le mail est bien parti mais fini dans le filtre anti-spam.

par Sodams » 05 mai 2009, 11:08

Utilise le foreach pour créé ta requête.

Une fois la requête créée (et donc le foreach terminé) tu n'as plus l'exécuté.
$mail = 0;

// Création de la requête
$q = "SELECT * FROM utilisateurs WHERE id_utilisateur  in (";
foreach($_POST['cac'] as $key => $value) 
{ 
    // Ajout de l'ID
    $q += $value.",";
} 

// On retire la dernière virgule
$q = substr($q, 0, -1);

// On termine la requête
$q += ");";

$r = mysql_query($q); 
while($row=mysql_fetch_array($r))
{ 
    $destinataire = $row["mail_utilisateur"]; 
    mail("$destinataire","Avis à populous", $_SESSION["log"]. " a posté un message pour vous"); 
    $mail++; 
}

par Megadeth » 05 mai 2009, 10:59

bonjour,

Le mail n'arrive tout simplement pas...

Pour faire cela en une seule requête : j'étais parti du principe du foreach pour identifier via la $valeur.

Tu vois une autre soluce ?

Mega
;)

par D4Y » 05 mai 2009, 10:50

Qu'est-ce qui ne va pas dans l'envoi du mail ?

par Sodams » 05 mai 2009, 10:20

Peux-tu construire ta requête autrement?
Pour chaque $_POST['cac']? tu crées une nouvelle requête et tu l'exécutes.

Pourquoi ne ferais-tu pas celà en une seule requête?

Mail : envoi multiple via une boucle

par Megadeth » 05 mai 2009, 09:53

Bonjour,

J'ai un problème avec le code suivant. Je voulais savoir si on pouvait l'optimiser (ca rame un peu) mais surtout faire en sorte que ca marche hors je ne vois pas ou ça déconne alors qu'à part l'envoi de mail tout fonctionne. Ma table comporte des adresses mails valide bien sur et tous les echo de valeur sont probants #-o
$mail = 0;
foreach($_POST['cac'] as $key => $value) {
$q = "SELECT * FROM utilisateurs WHERE id_utilisateur = ".$value;
$r = mysql_query($q);
while($row=mysql_fetch_array($r)){
$destinataire = $row["mail_utilisateur"];
mail("$destinataire","Avis à populous", $_SESSION["log"]. " a posté un message pour vous");
$mail++;
}
}
Mega
;)

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]