Partage
  • Partager sur Facebook
  • Partager sur Twitter

Envoyer un mail à + de 1000 personnes

19 août 2008 à 16:35:16

Bonjour, je souhaiterai envoyer un mail à bcp de personnes + de 1000, je voudrais savoir comment faire, s'il faut boucler un script, car j'ai qu'une seule variable "$adresses=..." qui contient une liste de + 1000 personnes...

Comment faire pour envoyer le mail a toutes ses personnes en une seule fois ?



Merci
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
19 août 2008 à 16:36:43

Et bin tu fait une boucle ki envoi tes mails... précise ce que tu veux.
  • Partager sur Facebook
  • Partager sur Twitter
19 août 2008 à 16:44:30

<?php
$adresses="..." //contient plus de 1000 adresses

$mail = "..." // contient le contenue du mail

$sujet = "..."// contient le sujet du mail


mail ($adresses, $mail, $sujet, $header)
?>


En gros voici le script que je veux faire, sauf que la variable adresse contient une liste de plus de 1000 mails, j'ai déja tenté d'envoyer le mail à toutes les adresses ca n'a pas marché, je me suis renseigné et on m'a dit de faire une boucle, mais je ne voit pas comment la faire...



  • Partager sur Facebook
  • Partager sur Twitter
19 août 2008 à 16:48:40

ci les e-mail vienne d'une base de données tu fait:

<?php
   while ($donne= mysql_fetch_assoc($reponce))
   {

   }
?>


autrement:

<?php
  $tableau = array('mail1', 'mail2');
  foreach ($tableau as $value)
  {

  }
?>
  • Partager sur Facebook
  • Partager sur Twitter
19 août 2008 à 16:49:32

Salut ;)

Sous quelle forme est ta liste de 1000 mails ? Une chaine de caractères ? Les mails sont séparés par des ";", ",",... ?

Précises un peu.

Tangooo ^^
  • Partager sur Facebook
  • Partager sur Twitter
19 août 2008 à 16:53:24

Heu non les mails ne sont pas gardés ds une base de donnée, et il se écrit dans le script de cette manière :


# email1@email.fr
# email2@email.fr
# email3@email.fr
# email4@email.fr
[....]


Ou sinon je peux tenter de les stoquer dans une base de donnée, mais c'est pas possible vu que c'est une liste non ?
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
19 août 2008 à 16:59:01

Bonjour,

Voila un principe qui fait un envoie par paquet (dans le code il est configuré par 10) avant de rafraichir la page, depuis des adresse d'une table mysql si tu viens à en faire une ; tu peux t'en inspirer voir y porter quelque amélioration:
<?php
if (empty($_GET['action']))
{
/* on fait une connexion persistante a la base de donnée pour la durée d'execution de la page pour toute les requette */
mysql_pconnect("****","*****","*****")or trigger_error(mysql_error(),E_USER_ERROR); /* mettre les identifiants de connexion*/
mysql_select_db("*****");/* nom de la base de donnees */
if (empty($_GET['depart_boucle_suivante']))
{
$reponse = mysql_query("SELECT id FROM membre ORDER BY id DESC LIMIT 0, 1") or die(mysql_error());/* si besoin modifié le nom de la table membre par la bonne */
while ($donnees = mysql_fetch_array($reponse) )
{
$dernier_id_membre=$donnees['id'];
}
$depart_boucle=$dernier_id_membre;
$nb_boucle=round(($dernier_id_membre/10),0)+1;
}
else
{
$nb_boucle=$_GET['nb_boucle'];
$depart_boucle=$_GET['depart_boucle_suivante'];
}
$nb_boucle_restant=$nb_boucle-1;
$fin_boucle=$depart_boucle-10;
while($depart_boucle>$fin_boucle)
{
/* requête pour récupérer les données du mail en fonction de id=$depart_boucle */
$reponse = mysql_query("SELECT email FROM membre WHERE id=$depart_boucle") or die(mysql_error());
$donnees = mysql_fetch_array($reponse);
if ($donnees['email']!="")
{
$email=$donnees['email'];
$email_expediteur="contact@mondomaine.fr";/* ligne à modifier avec l'email du webmaster */
$message="Message d'essai depuis le site \n\n le Webmaster";/* mise en place du message (à modifier a la demande) */
$objet="voila un email depuis le site par une boucle";/* ligne a adapter mais avec un vrais texte éviter test,essai,ect */
$entete = "From: ".$email_expediteur." <".$email_expediteur.">\n"; /* ligne 1 entête type texte */
$entete .= "MIME-Version: 1.0";/* ligne 2 entête type texte */
mail($email,$objet,$message,$entete);/* envoi du mail */
$depart_boucle_suivante=$depart_boucle-1;
}
else {
$depart_boucle_suivante=$depart_boucle-1;
}
$depart_boucle--;
if ($depart_boucle==0)
{
/* si on est au bout du script création d'un lien de fin */
$lien_fin='test_news_letters.php?action=fin';
break;
}
}
mysql_close();
/* création du lien en cour du script */
$lien='test_news_letters.php?nb_boucle='.$nb_boucle_restant.'&depart_boucle_suivante='.$depart_boucle_suivante;
if (empty($lien_fin))
{
$page=$lien;
}
else
{
$page=$lien_fin;
}
/* lien automatique */
header("Location:$page");
}
elseif ($_GET['action']=='fin')
{
echo 'fin des expédition d\'email';
}
?>
  • Partager sur Facebook
  • Partager sur Twitter
19 août 2008 à 17:20:26

Le pb c'est qui faut que j'enregistre toutes les adresse dans la base de donnée, c'est trop long...

Merci en tout cas eguillaume :)
  • Partager sur Facebook
  • Partager sur Twitter
19 août 2008 à 17:22:04

Citation : Vincent11

Le pb c'est qui faut que j'enregistre toutes les adresse dans la base de donnée, c'est trop long...

Merci en tout cas eguillaume :)



T'as qu'à faire un script qui analyse ta liste d'adresse et qui met chaque adresse dans une array dès qu'il trouve un '@' :-° et ensuite t'envoies tout ça dans une bdd.
  • Partager sur Facebook
  • Partager sur Twitter
19 août 2008 à 17:25:14

Si les adresses sont comme ceci :
<?php
$adresses = "# adresse@mail.com
# adresse@mail.com
# adresse@mail.com
# adresse@mail.com";

Alors tu fais ça :
<?php
$adresses = explode("\n", $adresses);

foreach($adresses as $adresse) mail(str_replace('# ', '', $adresse), 'message', 'sujet');

  • Partager sur Facebook
  • Partager sur Twitter
19 août 2008 à 17:30:37

Ou sinon tu mets tes adresses dans un array... puis tu fais une boucle :
<?php
$mail = "..." ;
$sujet = "...";
$header = "...";
foreach ($array_adresse as $adresse)
  {
    mail ($adresse, $mail, $sujet, $header);
  }
?>

Et $array_adresse tu le crée en mettant le contenu de ton fichier dans une variable puis tu fais un explode() (enfin pour créer $array_adresse je suis pas sur...)
[Edit]Et m**** grillé ! :colere2: [/edit]
  • Partager sur Facebook
  • Partager sur Twitter
19 août 2008 à 19:47:03

Citation : Aυrélien

Si les adresses sont comme ceci :

<?php
$adresses = "# adresse@mail.com
# adresse@mail.com
# adresse@mail.com
# adresse@mail.com";


Alors tu fais ça :

<?php
$adresses = explode("\n", $adresses);

foreach($adresses as $adresse) mail(str_replace('# ', '', $adresse), 'message', 'sujet');





J'ai essayé de mettre en place ton script, en effet il marche =)) Merci :D, mais ce que je ne comprend pas c'est qu'il se répète...
  • Partager sur Facebook
  • Partager sur Twitter
30 septembre 2021 à 17:16:49

Bonjour,

Je ferme ce sujet pour débug (bloqué en haut du forum). En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL