Envoyer bcp de email avec mail()

ImmortalPC Messages postés 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 - 25 mars 2005 à 22:51
ImmortalPC Messages postés 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 - 26 mars 2005 à 21:13
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

o0Leo0o Messages postés 116 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 août 2005
26 mars 2005 à 08:14
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);
0
ImmortalPC Messages postés 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 2
26 mars 2005 à 12:42
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.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 mars 2005 à 14:16
20 000 emails ????
T'as monte un serveur de spam ou quoi ??
Je ne vois guere que la solution de o0leo0o.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
26 mars 2005 à 14:41
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>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
26 mars 2005 à 14:43
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>
0
ImmortalPC Messages postés 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 2
26 mars 2005 à 19:21
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.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
26 mars 2005 à 19:24
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>
0
o0Leo0o Messages postés 116 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 août 2005
26 mars 2005 à 19:26
Hum... 20 000 Bcc, ça ralentira tout de même énormément la fonction :x
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
26 mars 2005 à 19:28
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>
0
o0Leo0o Messages postés 116 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 août 2005
26 mars 2005 à 19:30
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).
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
26 mars 2005 à 19:44
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>
0
ImmortalPC Messages postés 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 2
26 mars 2005 à 20:19
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
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
26 mars 2005 à 20:31
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>
0
o0Leo0o Messages postés 116 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 août 2005
26 mars 2005 à 20:38
Ouép, tu auras beaucoup plus facile a tout mettre dans une base :)

Et ne t'inquiète pas, tout rentrera dans la base :)
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
26 mars 2005 à 20:43
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>
0
ImmortalPC Messages postés 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 2
26 mars 2005 à 20:52
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.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
26 mars 2005 à 21:03
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>
0
ImmortalPC Messages postés 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 2
26 mars 2005 à 21:13
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.
0
Rejoignez-nous