[RESOLU] Envoie mail en boucle a plusieurs destinataires différent

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 : [RESOLU] Envoie mail en boucle a plusieurs destinataires différent

Re: Envoie mail en boucle a plusieurs destinataires différent

par azizss » 09 déc. 2015, 15:08

Bonjour,

Merci pour ton aide j'ai résolue mon problème, j'avais mal utiliser les informations d'enregistrement, et cela et fonctionnel merci encore a toi.

Re: Envoie mail en boucle a plusieurs destinataires différent

par @rthur » 07 déc. 2015, 17:17

Commence par là :
Repars d'une page blanche et contente toi juste dans un premier temps de lister(afficher) toutes les adresses e-mail que tu as dans ta base de données.
Une fois que tu auras fait cela et que ça marchera, on en reparle

Re: Envoie mail en boucle a plusieurs destinataires différent

par azizss » 07 déc. 2015, 16:39

Merci de ta réponse @rthur,

je voie bien mais ligne mais quant je valide l'envoie il ne me fait pas la boucle, il envoie un mail au nombre d'adresse que j'ai sur un seul mail.
exemple
[email protected]
[email protected]
[email protected]
[email protected]

il va bien m'envoyer 4 mails mais à [email protected] et me faire 4 enregistrement en BDD avec la même adresse [email protected]

Voilà

Re: Envoie mail en boucle a plusieurs destinataires différent

par @rthur » 07 déc. 2015, 16:19

A première vue je dirais que ça a fonctionné vu que tu as 2 var_dump() donc il est passé 2 fois dans ta boucle.
Vérifies ta requête SQL dans phpmyadmin pour être sûr du nombre de résultats qu'elle renvoie.


PS : Pour 2 lignes de texte, le plus simple c'est de le copier-coller plutôt que de faire une capture d'écran que tu anonymise et upload sur drive...

Re: Envoie mail en boucle a plusieurs destinataires différent

par azizss » 07 déc. 2015, 16:15

Merci de ton aide,
J'ai fait les changements cela me donne les lignes suivante

[img]
https://drive.google.com/file/d/0BxFPNq ... sp=sharing
[/img]

Je n'arrive pas a faire la boucle, merci de votre aide

Re: Envoie mail en boucle a plusieurs destinataires différent

par @rthur » 07 déc. 2015, 14:58

Bonjour,

J'ai déplacé ton message dans le forum PHP débutant pour qu'il y trouve davantage de réponse.

Ton message est incompréhensible, tu nous balances ton code sans nous dire ce que tu as essayé et ce qui ne marche pas.

Repars d'une page blanche et contente toi juste dans un premier temps de lister toutes les adresses e-mail que tu as dans ta base de données.
Une fois que tu auras ça de fonctionnel, tu pourras enrichir ce script pour ajouter ton envoi de mail.


Voici une piste pour démarrer :
<?php
$sql = 'SELECT email, prenom, nom FROM table';
$stmt = $dbh->prepare($sql);
$stmt->execute();
while ($row = $stmt->fetch()) {
	var_dump($row);
	print "<hr />";
}

Re: Envoie mail en boucle a plusieurs destinataires différent

par azizss » 07 déc. 2015, 13:14

Bonjour,

Je revient vers vous pour demander de l'aide, quelqu'un pourrai me donnée un exemple pour pouvoir avance et trouver une solution.
Je cherche via une liste de mail en BDD a envoyé un mail unitaire a chaque personne de cette liste et a écrire l’envoie en BDD le résultat de l’envoie.

Merci pour cette aide.

Re: Envoie mail en boucle a plusieurs destinataires différent

par azizss » 04 déc. 2015, 17:36

Bonsoir,

quelqu'un peux m'aider,
j'ai fait quelque changement les voilà
Cela m'affiche les deux adresse mail de mon liste mais il ne fait pas la boucle.
et écris là même adresse mail dans la BDD.

Merci de votre aide,

Code : Tout sélectionner

<?php include_once '../admin-class.php'; include_once '../config/includes/config.php'; $admin = new itg_admin(); $admin->_authenticate(); foreach ($_REQUEST as $key => $val) { $val = preg_replace("/[^_A-Za-z0-9-\.&=]/i",'', $val); $_REQUEST[$key] = $val; } ?> <?php $reponse = $bdd->query('SELECT * FROM db_groupe_newsletter, db_newsletter WHERE name_groupe_newsletter = "'.$_GET['groupe_send'].'" AND id_newsletter = "'.$_GET['newsletter_send'].'" AND send_email_customer_newsletter = 0'); $reponse1 = $bdd->query('SELECT * FROM donnee'); $reponse2 = $bdd->query('SELECT COUNT(*) as emailcustomer_groupe_newsletter FROM db_groupe_newsletter, db_newsletter WHERE name_groupe_newsletter = "'.$_GET['groupe_send'].'" AND id_newsletter = "'.$_GET['newsletter_send'].'" AND send_email_customer_newsletter = 0'); $donnee = $reponse->fetch(); $donnee1 = $reponse1->fetch(); $result = $reponse2->fetchColumn(); { ?> <?php $nbligne = "$result"; $mail = $donnee['emailcustomer_groupe_newsletter']; $email_add = $donnee['email_HD']; $sujet = $donnee['sujet_newsletter']; $titre = $donnee['titre_newsletter']; $type_email_send = $donnee['html_newsletter']; $type_email_send_texte = $donnee['texte_newsletter']; $signature = $donnee1['signature']; $signature_texte = $donnee1['signature_text']; $id_groupe_newslette = $donnee['id_groupe_newsletter']; $id_newslette = $donnee['id_newsletter']; $send_db_groupe_newsletter = $donnee['send_db_groupe_newsletter']; $send_email_customer = "$mail"; $send_db_groupe_newsletter = '1'; $negiciateur = $admin->get_username(); $negiciateur1 = $admin->get_nicename(); $reponse3 = $bdd->query('SELECT emailcustomer_groupe_newsletter FROM db_groupe_newsletter, db_newsletter WHERE name_groupe_newsletter = "'.$_GET['groupe_send'].'" AND id_newsletter = "'.$_GET['newsletter_send'].'" AND send_email_customer_newsletter = 0'); foreach ($reponse3->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_GROUP) as $emailcustomer_groupe_newsletter => $subarray) { printf('<h3>%s</h3>', $emailcustomer_groupe_newsletter); echo '<ul>'; foreach ($subarray as $subsubarray) { $mail = $subarray['emailcustomer_groupe_newsletter']; printf($mail); if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues. { $passage_ligne = "\r\n"; } else { $passage_ligne = "\n"; } $message_txt = "$type_email_send_texte $signature_texte"; $message_html = "$type_email_send $signature"; $boundary = "-----=".md5(rand()); $boundary_alt = "-----=".md5(rand()); $sujet = "$sujet"; $header = "From: \"$titre\"<$mail>".$passage_ligne; $header.= "Reply-to: \"$titre\" <$email_add>".$passage_ligne; $header.= "MIME-Version: 1.0".$passage_ligne; $header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne; $message = $passage_ligne."--".$boundary.$passage_ligne; $message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne; $message.= $passage_ligne."--".$boundary_alt.$passage_ligne; $message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne; $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne; $message.= $passage_ligne.$message_txt.$passage_ligne; $message.= $passage_ligne."--".$boundary_alt.$passage_ligne; $message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne; $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne; $message.= $passage_ligne.$message_html.$passage_ligne; $message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne; $message.= $passage_ligne."--".$boundary.$passage_ligne; mail($mail,$sujet,$message,$header); $sql = "INSERT INTO `appli`.`send_group_newsletter` (`id_send_group_newsletter`, `id_newslette`, `id_groupe_newslette`, `send_db_groupe_newsletter`, `send_email_customer`, `date_groupe_newsletter`, `timedate_groupe_newsletter`, `negiciateur`) VALUES (NULL, '$id_newslette', '$id_groupe_newslette', '$send_db_groupe_newsletter', '$send_email_customer', NOW(), NOW(), '$negiciateur $negiciateur1')"; $sql1 = "UPDATE `appli`.`db_groupe_newsletter` SET `send_email_customer_newsletter` = '1' WHERE `db_groupe_newsletter`.`id_groupe_newsletter` = '$id_groupe_newsletter'"; $bdd->exec($sql); $bdd->exec($sql1); } } echo '</ul>'; } ?> <?php $reponse->closeCursor(); $reponse1->closeCursor(); $reponse2->closeCursor(); $reponse3->closeCursor(); echo '<SCRIPT LANGUAGE="JavaScript"> window.alert("Votre newsgroupe a était envoyé !") window.location.href="../administration/newsletter_en.php" </SCRIPT>'; ?>

Re: Envoie mail en boucle a plusieurs destinataires différent

par azizss » 04 déc. 2015, 11:51

bonjour,

je n'y arrive pas a faire correctement la boucle, pouvez-vous m'aider, avec un exemple.

MERCI A VOUS,

Re: Envoie mail en boucle a plusieurs destinataires différent

par Spols » 04 déc. 2015, 09:27

tu ne mets jamais à jour ta variable mail qui contient donc toujours le premier destinataire.
Il faut que tu la mette à jour dans chaque itération de boucle

Re: Envoie mail en boucle a plusieurs destinataires différent

par azizss » 03 déc. 2015, 16:11

Merci pour votre réponse,

j'ai utiliser cela comme ceci
...
<?php

	$nbligne = "$result";
	
	$mail = $donnee['emailcustomer_groupe_newsletter'];
	$email_add = $donnee['email_HD'];

	$sujet = $donnee['sujet_newsletter'];
	$titre = $donnee['titre_newsletter'];
   
	$type_email_send = $donnee['html_newsletter'];
	$type_email_send_texte = $donnee['texte_newsletter'];
   
	$signature = $donnee1['signature'];
	$signature_texte = $donnee1['signature_text'];
	
	$id_groupe_newslette = $donnee['id_groupe_newsletter'];
	$id_newslette = $donnee['id_newsletter'];
	$send_db_groupe_newsletter = $donnee['send_db_groupe_newsletter'];
	$send_email_customer = "$mail";
	$send_db_groupe_newsletter = '1';
	
	$negiciateur = $admin->get_username(); 
	$negiciateur1 = $admin->get_nicename();
	 

for ($i = 0; $i < $nbligne; $i++) {	

$result = $reponse->fetchColumn(5);

if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues.
{
	$passage_ligne = "\r\n";
}
else
{
	$passage_ligne = "\n";
}

$message_txt = "$type_email_send_texte $signature_texte";
$message_html = "$type_email_send $signature";

$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());

$sujet = "$sujet";

$header = "From: \"$titre\"<$mail>".$passage_ligne;
$header.= "Reply-to: \"$titre\" <$email_add>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
 
$message = $passage_ligne."--".$boundary.$passage_ligne;
$message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;

$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_txt.$passage_ligne;
 
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
 
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
 
$message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;
 
$message.= $passage_ligne."--".$boundary.$passage_ligne;
 
mail($mail,$sujet,$message,$header);

$sql = "INSERT INTO `appli`.`send_group_newsletter` (`id_send_group_newsletter`, `id_newslette`, `id_groupe_newslette`, `send_db_groupe_newsletter`, `send_email_customer`, `date_groupe_newsletter`, `timedate_groupe_newsletter`, `negiciateur`) VALUES (NULL, '$id_newslette', '$id_groupe_newslette', '$send_db_groupe_newsletter', '$send_email_customer', NOW(), NOW(), '$negiciateur $negiciateur1')";

$sql1 = "UPDATE `appli`.`db_groupe_newsletter` SET `send_email_customer_newsletter` = '1' WHERE `db_groupe_newsletter`.`id_groupe_newsletter` = '$id_groupe_newsletter'";

$bdd->exec($sql);
$bdd->exec($sql1);
}  
?>
...
Cela m'envoie bien les mails mais toujours au 1er destinataire comme l'exemple ci-dessus.
Il ne parcours pas ma liste.

merci de votre aide,

Re: Envoie mail en boucle a plusieurs destinataires différent

par or 1 » 03 déc. 2015, 13:24

voir http://php.net/manual/fr/pdostatement.fetch.php pour une façon correcte de parcourir des résultats

Envoie mail en boucle a plusieurs destinataires différent

par azizss » 03 déc. 2015, 11:37

Bonjour,

Je sollicites votre aide j’essaie d’envoyé un mail a plusieurs destinataires.

je vous cherche à les envoyer a l'unité, un après l'autre;

et quant mon mail est partie écrire sur la b.d.d que le mail avec quelques informations est bien partie.

là j'arrive a faire partie mon mail, et a écrire dans ma b.d.d, mais il me fait que le 1er et au nombre de mail que j'envoie.

exemple : j'ai 4 mails différents :

[email protected]
[email protected]
[email protected]
[email protected]

il envois bien 4 mais qu' a [email protected] et écris 4 fois sur la bdd avec [email protected].
mais il ne me fait pas de boucle.

Voilà ci-dessous mon code.

merci de votre aide,

Code : Tout sélectionner

<?php include_once '../admin-class.php'; include_once '../config/includes/config.php'; $admin = new itg_admin(); $admin->_authenticate(); foreach ($_REQUEST as $key => $val) { $val = preg_replace("/[^_A-Za-z0-9-\.&=]/i",'', $val); $_REQUEST[$key] = $val; } ?> <?php $reponse = $bdd->query('SELECT * FROM db_groupe_newsletter, db_newsletter WHERE name_groupe_newsletter = "'.$_GET['groupe_send'].'" AND id_newsletter = "'.$_GET['newsletter_send'].'" AND send_email_customer_newsletter = 0'); $reponse1 = $bdd->query('SELECT * FROM donnee'); $reponse2 = $bdd->query('SELECT COUNT(*) as emailcustomer_groupe_newsletter FROM db_groupe_newsletter, db_newsletter WHERE name_groupe_newsletter = "'.$_GET['groupe_send'].'" AND id_newsletter = "'.$_GET['newsletter_send'].'" AND send_email_customer_newsletter = 0'); $donnee = $reponse->fetch(); $donnee1 = $reponse1->fetch(); $result = $reponse2->fetchColumn(); { ?> <?php $nbligne = "$result"; $mail = $donnee['emailcustomer_groupe_newsletter']; $email_add = $donnee['email_HD']; $sujet = $donnee['sujet_newsletter']; $titre = $donnee['titre_newsletter']; $type_email_send = $donnee['html_newsletter']; $type_email_send_texte = $donnee['texte_newsletter']; $signature = $donnee1['signature']; $signature_texte = $donnee1['signature_text']; $id_groupe_newslette = $donnee['id_groupe_newsletter']; $id_newslette = $donnee['id_newsletter']; $send_db_groupe_newsletter = $donnee['send_db_groupe_newsletter']; $send_email_customer = "$mail"; $send_db_groupe_newsletter = '1'; $negiciateur = $admin->get_username(); $negiciateur1 = $admin->get_nicename(); for ($i = 0; $i < $nbligne; $i++) { if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) { $passage_ligne = "\r\n"; } else { $passage_ligne = "\n"; } $message_txt = "$type_email_send_texte $signature_texte"; $message_html = "$type_email_send $signature"; $boundary = "-----=".md5(rand()); $boundary_alt = "-----=".md5(rand()); $sujet = "$sujet"; $header = "From: \"$titre\"<$mail>".$passage_ligne; $header.= "Reply-to: \"$titre\" <$email_add>".$passage_ligne; $header.= "MIME-Version: 1.0".$passage_ligne; $header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne; $message = $passage_ligne."--".$boundary.$passage_ligne; $message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne; $message.= $passage_ligne."--".$boundary_alt.$passage_ligne; $message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne; $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne; $message.= $passage_ligne.$message_txt.$passage_ligne; $message.= $passage_ligne."--".$boundary_alt.$passage_ligne; $message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne; $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne; $message.= $passage_ligne.$message_html.$passage_ligne; $message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne; $message.= $passage_ligne."--".$boundary.$passage_ligne; mail($mail,$sujet,$message,$header); $sql = "INSERT INTO `appli`.`send_group_newsletter` (`id_send_group_newsletter`, `id_newslette`, `id_groupe_newslette`, `send_db_groupe_newsletter`, `send_email_customer`, `date_groupe_newsletter`, `timedate_groupe_newsletter`, `negiciateur`) VALUES (NULL, '$id_newslette', '$id_groupe_newslette', '$send_db_groupe_newsletter', '$send_email_customer', NOW(), NOW(), '$negiciateur $negiciateur1')"; $sql1 = "UPDATE `appli`.`db_groupe_newsletter` SET `send_email_customer_newsletter` = '1' WHERE `db_groupe_newsletter`.`id_groupe_newsletter` = '$id_groupe_newsletter'"; $bdd->exec($sql); $bdd->exec($sql1); } ?> <?php } $reponse->closeCursor(); $reponse1->closeCursor(); echo '<SCRIPT LANGUAGE="JavaScript"> window.alert("Votre newsgroupe a était envoyé !") window.location.href="../administration/newsletter_en.php" </SCRIPT>'; } ?>