Envoyer bcp de email avec mail()

Signaler
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
-
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
-
Salut,

Je me pose à un gros problème sur un de mes scripts,

envoyer beaucoup d'email ( environs 20 000 ).

Le problème c'est le time out.

J'ai essayé header() et une boucle for() ( for c'est pour evoyer un maximum d'email

et header() c'est pour éviter le time out )

un truc dans ce style :

<?php

if(!IsSet($_GET['i'])){$i = 1;}else{$i = $_GET['i'];}



for ($i;$i<=50;$i++){ // à chaque tour j'envoie un email à une personne

// l'envoie d'un email à une personne

}

$i = $i + 50;

Header('Location: '.$_SERVER['PHP_SELF'].'?i='.$i);// redirection

?>



Mais j'ai laissé tomber..

Quelqu'un a t'il une idée car moi je sais pas du tout comment faire

Je présise que la liste des adresses email se trouve sous cette forme :

adresse1@mail.com;adresse2@mail.com;adresse3@mail.com;adresse4@mail.com



Si non je pense que je vais utiliser Bcc ou Cci ( copies cachées ).

Comment fait ce site pour envoyer autant d'emails ???



@++


Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.

18 réponses

Messages postés
116
Date d'inscription
samedi 19 juin 2004
Statut
Membre
Dernière intervention
20 août 2005

Si le serveur d'où tu envoies tes mails n'est pas en mode safe, tu peux changer la valeur du time out :

set_time_limit(temps_en_secondes);
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
Salut,
merci de ta réponce mais s'il a autre chose que ça, cela serait mieux.
Quelqu'un c'est comment fait ce site pour envoyer autant d'email ?
Si non je prends la solution de o0Leo0o.
@++

Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
20 000 emails ????
T'as monte un serveur de spam ou quoi ??
Je ne vois guere que la solution de o0leo0o.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



déjà, optimiser toutes les fonctions. Envoyer un mail puis faire un header, ça pompe énormément de requêtes HTTP...



Envoie tous tes mails en BCC, tu n'auras qu'une fonction mail() à
utiliser une seule fois (par contre une boucle de 20000 ajouts pour
construire les arguments passés à la fonction).



Une boucle while est plus rapide qu'une boucle for

$i=0;

while($i<20000)

{



$i++;

}



et à la fin, un header pour rediriger


<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Ensuite si tu as toujours le timeout (ce qui est normal pour envoyer 20000 mails)



fait une requête MySQL qui rajoute "1" lorsque le mail a été envoyé, et
0 sinon. Ensuite à chaque refresh de ta page tu prends les X mails (250
par exemple) qui ont un "0" dans le champ mysql. et ainsi de suite. Je
fais ça pour ma newsletter ça fonctionne très bien :-)



a ++

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
Salut,
J'ai pas besoin de faire un requete SQL car j'utilise pas MySQL j'ai tout dans un fichier comme cela :

<?php $_GET['page_affichage'] = '';$_POST['page_affichage'] = ''; if(@$page_affichage != '*****'){include('./page_error.php');} ?>// Protection
gui@guki3d.sdg;dsgd@sdggf.sdfgsfgd;sgfdgf@fgsdfd.sdgfdg;ezf@fqzerf.fre;drgfesd@qserfqse.erf;qefrerf@frswfsd.ferqf;eqfrqerfrqe@fqefe.fre;frefrqerf@fqsdrfer.ferqs;eqferfe@qer.rgdr;sergvservt@trsvetrv.set;dtrversbv@ertbserr.set;etbestv.esqvtrse@tbvqset.strbv;esntr@etnj.etrsej;etjesjej@ejtestsj.estj;

Je l'utilise pas car je sais vraiment pas du tout comment faire et si elle serait capable de contenir 20 000 emails !?

>malalam
Heu non c'est pas pour monter 'un serveur de spam' ) c'est pour un mailing liste.

Une autre question ( je sais je suis chien ;-) Bcc ça peut contenir 20 000 adresses emails ?
@+ et merci de toutes vos réponces
PS: Le @ dans @$page_affichage c'est pour éviter de rajouter du code pour rien ici, sur le script originel elle n'est pas comme ça.
Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Bah ok, pas de SQL, alors fait un fichier temporaire qui contiendra les email restants à envoyer...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
116
Date d'inscription
samedi 19 juin 2004
Statut
Membre
Dernière intervention
20 août 2005

Hum... 20 000 Bcc, ça ralentira tout de même énormément la fonction :x
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Mais ça sera surement plus rapide que de faire 20000 refreshs de page + 20000 mail()

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
116
Date d'inscription
samedi 19 juin 2004
Statut
Membre
Dernière intervention
20 août 2005

Ouép :p
Mais c'est pa ssûr que tout passe en 30 secondes. Donc tu pourrais peut-être décomposer ton fichier qui contient les adresses mail en plusieurs fichiers qui contiendraient 500 adresses au maximum (par exemple).
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
C'est certain que ça passera pas en 30 secondes :-)

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
Vous etes des rapides du clavier !!!
Je vais manger pendant 30 min et déjà 5 msg !!!
Les Bcc c'est un email mais conbien d'adresses peut'on mettre ??
Et fractionner le fichier c'est je ne sais conbien d'adresse a déplacer !!!
Avec une base de donnée MySQL ça serait pas mieux ?
Est elle capable de contenir 20 000 emails ?
Vous avez pas msn ça serai plus rapide ?
@++
Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
Forum pour discuter de vos problèmes ou même aider les autres ad
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Bah c'est clair que la base offre de multiples avantages, en même temps
fractionner un fichier avec une boucle ça se fait simplement...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
116
Date d'inscription
samedi 19 juin 2004
Statut
Membre
Dernière intervention
20 août 2005

Ouép, tu auras beaucoup plus facile a tout mettre dans une base :)

Et ne t'inquiète pas, tout rentrera dans la base :)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Ouais, et ça sera en plus plus rapide pour sélectionner les mails restants à envoyer...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
Vous pourriez m'aider pour y mettre dans la base sql ?
je sais me connecter a la base sql mais c'est tout :

<?php
$mysql_host = 'serveur'; // le serveur
$mysql_login = 'mon_login'; // le login
$mysql_pass = '*****'; // mot de passe
$mysql_dbnom = 'localhost'; // nom de la base de donnee
$sqlconnect = mysql_connect($mysql_host,$mysql_login,$mysql_pass);
mysql_select_db($mysql_dbnom,$sqlconnect);
?>

Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
http://www.vulgarisation-informatique.com/mysql-modif-donnees.php

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
Donc pour résumer ( pour les email )
j'utilise Bcc et je mets toutes mes adresse dedans ?
c'est ça ?
as tu msn ça ira + vite pour parler?

Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.