Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1934 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Envoi d'une newsletter

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Envoi d'une newsletter

n°1439955
marquis
Posté le 11-09-2006 à 08:40:58  profilanswer
 

Salut,
 
J'ai développée une newsletter que j'envoi à ses participants en faisant une boucle autour de la fonction mail(). Il y a donc un mail qui est envoyé par destinataire.
 
Tout marchait bien mais depuis, environ xx personnes se sont inscrites. A chaque fois que j'exécute le script, les mails sont envoyés en plusieurs exemplaires comme si l'exécution du script était interrompue et recommençait depuis le début ou comme si le serveur de mail (qmail sur un dédié) s'emballait.
 
Que faire ? J'ai songé à supprimer la boucle autour de la fonction mail() et envoyer qu'un mail avec les adresses de tous les inscrits en CCI. Le problème c'est que ma newsletter soit identifiée comme SPAM par un antispam puisque le mail du destinataire n'apparaitra pas dans le champ TO.
 
Merci d'avance pour votre aide.


---------------
Marquis
mood
Publicité
Posté le 11-09-2006 à 08:40:58  profilanswer
 

n°1439961
CNeo
Posté le 11-09-2006 à 08:48:47  profilanswer
 

Il nous faut le code.

n°1439982
marquis
Posté le 11-09-2006 à 09:25:41  profilanswer
 

Code :
  1. while($row = mysql_fetch_row($result)) {
  2. mail($row[0], "Newsletter du $date_hier", $message, $headers);
  3. }


---------------
Marquis
n°1440034
sircam
I Like Trains
Posté le 11-09-2006 à 10:16:57  profilanswer
 

Laisse l'envoi en TO, c'est nettement plus propre. Le code est assez faible : en cas de terminaison inattendue, comment savoir d'où il faut reprendre?
 
Comment exécutes-tu le code ? Valeur de retour ?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1440039
marquis
Posté le 11-09-2006 à 10:19:34  profilanswer
 

J'exécute le code par CRON. Il n'y a aucun controle pour savoir si ca s'est bien exécuté et savoir où il y a eu une éventuelle terminaison. Je sais c'est pas bien...


---------------
Marquis
n°1440070
chani_t
From Dune
Posté le 11-09-2006 à 10:36:01  profilanswer
 

et si tu mettais ta liste des membres, avec leurs Emails, dans un fichier txt... que tu efface au fur et a mesure des envois... et que tu remet à jour lors d'une nouvelle news ? (+ un fichier de log pour remonter les erreurs)
 
ou alors dans ton fichier texte tu claque un tableau, avec comme deuxième colonne, la validation de l'envois de la news ?? ou l'erreur d'envois. Au moins si tu as une erreur tu peux remonter l'infos.

n°1440084
anapajari
s/travail/glanding on hfr/gs;
Posté le 11-09-2006 à 10:42:36  profilanswer
 

Si c'est le même message pour tout le monde, pourquoi tu n'enverrais pas un seul mail avec tous les destinataires en bcc?
ça t'eviterai ta boucle [:spamafote]

n°1440128
sircam
I Like Trains
Posté le 11-09-2006 à 10:57:55  profilanswer
 

anapajari a écrit :

Si c'est le même message pour tout le monde, pourquoi tu n'enverrais pas un seul mail avec tous les destinataires en bcc?
ça t'eviterai ta boucle [:spamafote]


 :non:  
 
1°- Ca fait pas propre chez le récipient (non personnalisé);
2°- Risque élevé d'être marqué comme SPAM, à juste titre;
3°- Gênant pour le récipient qui utilise un nom de domaine avec des adresses différentes sur la même boîte (geek inside);
4°- Nb de récipients CC ou BCC Pas illimité.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1440286
marquis
Posté le 11-09-2006 à 14:07:29  profilanswer
 

Chani_t
Ca m'a l'air d'etre une belle usine à gaz ta solution. Pas plus simple ?
 
anapajari
même réponse que sircam
 
Comment c'est géré par les gros script ?


---------------
Marquis
n°1440306
chani_t
From Dune
Posté le 11-09-2006 à 14:18:33  profilanswer
 

marquis a écrit :

Chani_t
Ca m'a l'air d'etre une belle usine à gaz ta solution. Pas plus simple ?


 
Bof.. je ne vois pas trop en quoi...
 
1 fonction avant la boucle qui regarde si le fichier listant les utilisateurs existe, et si c'est le cas, il regarde ou il en est et replace l'index au bon endroit.
1 fonction dans la boucle pour remettre à jour le fichier et pour enregistrer les log d'erreur..  
 
M'enfin aprés tu peux faire ça avec la base de données, mais bon ça t'oblige à faire un requête à chaque itération.

mood
Publicité
Posté le 11-09-2006 à 14:18:33  profilanswer
 

n°1440313
marquis
Posté le 11-09-2006 à 14:23:48  profilanswer
 

Cette méthode me fait penser à une vieille bagnole qu'on essaye de faire marcher à coup de pied dans le Q. :)
 
Il n'y aurait pas un time out à modifier qq part plutot ?


---------------
Marquis
n°1440329
anapajari
s/travail/glanding on hfr/gs;
Posté le 11-09-2006 à 14:32:23  profilanswer
 


 :pfff:  

sircam a écrit :

1°- Ca fait pas propre chez le récipient (non personnalisé);


la notion de propreté sur un mail est toute relative

sircam a écrit :

2°- Risque élevé d'être marqué comme SPAM, à juste titre;


Que tu envoies 100 mails sur 100 adresses d'un même domaine, ou 1 mail à 100 adresses d'un même domaine, le risque d'être marqué "spammeur" est à peu près identique

sircam a écrit :

3°- Gênant pour le récipient qui utilise un nom de domaine avec des adresses différentes sur la même boîte (geek inside);


Euh ... pourquoi???

sircam a écrit :

4°- Nb de récipients CC ou BCC Pas illimité.


A ce moment là tu les coupes au nombre maxi...
 
Mais quoi qu'il arrive si tu dois envoyer 10.000 mails un par un, clairement tu vas avoir du mal.
Il est configuré à combien dans ton php.ini le max execution time?

Message cité 1 fois
Message édité par anapajari le 11-09-2006 à 14:32:59
n°1440570
marquis
Posté le 11-09-2006 à 21:28:15  profilanswer
 

Il est configuré à 30 secondes.


---------------
Marquis
n°1440656
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-09-2006 à 09:19:14  profilanswer
 

et ça te parait suffisant pour XX mails?

n°1440669
marquis
Posté le 12-09-2006 à 09:35:03  profilanswer
 

c'est à vous que je pose la question...


---------------
Marquis
n°1440745
dwogsi
Défaillance cérébrale...
Posté le 12-09-2006 à 11:14:49  profilanswer
 

Bah tu fais du traitement par lots!


Message édité par dwogsi le 12-09-2006 à 11:15:15
n°1440753
marquis
Posté le 12-09-2006 à 11:22:01  profilanswer
 

et ?


---------------
Marquis
n°1440827
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-09-2006 à 12:33:22  profilanswer
 

marquis a écrit :

c'est à vous que je pose la question...


si t'as 10 personnes oui et sinon non ... Mais vu les détails que tu donnes s'pas facile hein :/

n°1440829
marquis
Posté le 12-09-2006 à 12:36:13  profilanswer
 

il y a plus de 1000 personnes. Vous me conseillez d'augmenter le timeout à combien ?


---------------
Marquis
n°1440870
sircam
I Like Trains
Posté le 12-09-2006 à 13:25:48  profilanswer
 

anapajari a écrit :

:pfff:  
 
la notion de propreté sur un mail est toute relative
 
Que tu envoies 100 mails sur 100 adresses d'un même domaine, ou 1 mail à 100 adresses d'un même domaine, le risque d'être marqué "spammeur" est à peu près identique
 
Euh ... pourquoi???
 
A ce moment là tu les coupes au nombre maxi...
 
Mais quoi qu'il arrive si tu dois envoyer 10.000 mails un par un, clairement tu vas avoir du mal.
Il est configuré à combien dans ton php.ini le max execution time?


1°- A choisir entre un courrier adressé à mon nom et un toute boîte... Un email d'aspect professionnel et personnalisé comprendra un FROM légitime et un TO. Comme dans la vraie vie [:itm]
 
2°- Un discriminant possible pour le SPAM est l'utilisation du BCC. Si je n'apparais pas dans le TO, alors j'augmente la pondération du critère spam.
 
3°- J'utilise TOUJOURS machin@mon.nom.de.domaine.com, avec "machin" qui peut être microsoft, ldlc, ... soit le nom de la boîte ou du service. J'attends en retour que le courrier me soit adressé à cette adresse, qui aboutit de tte façon sur la même boîte email. Si un BCC est utilisé, le classement automatique échoue, et je dois dire que dans ce cas là, le catch all a plutôt tendance à rediriger vers Trash...
 
Un peu comme dans la vraie vie : si pas destinataire sur enveloppe alors go to poubelle papier. If destinataire mais aspect d'une pub alors vérifier si pas facture else poubelle papier. [:itm]
 
4°- Si c'est pour faire ça, autant ne pas le faire et envoyer 1 mail par destinataire. [:spamafote]
 
Toute la nuance entre une apparence propre, finie et professionnelle et... le reste. La touche en plus, quoi.  [:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1440873
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-09-2006 à 13:30:14  profilanswer
 

marquis a écrit :

il y a plus de 1000 personnes. Vous me conseillez d'augmenter le timeout à combien ?


regarde combien de temps il faut pour en envoyer 10, multiplie par 100 [:spamafote]

n°1440884
sircam
I Like Trains
Posté le 12-09-2006 à 13:42:14  profilanswer
 

Mais c'est quoi ce brol à la pé-h-pé ? [:mlc]
 
La durée d'exécution peut varier du simple au centuple avec des appels à des modules externes.
 
Et le nombre d'emails à envoyer peut être appelé à changer.
 
J'espère que tu ne vas pas changer un timeout global pour qu'une fonction donnée puisse passer dans un contexte donné... Enfin, quand je dis j'espère, tu fais comme tu veux [:itm]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1440897
marquis
Posté le 12-09-2006 à 13:52:48  profilanswer
 

Tu as peut etre une meilleure solution à me proposer ?


Message édité par marquis le 12-09-2006 à 13:53:02

---------------
Marquis
n°1440944
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-09-2006 à 14:21:02  profilanswer
 

sircam a écrit :

Mais c'est quoi ce brol à la pé-h-pé ? [:mlc]


t'parles de moi la?

sircam a écrit :

La durée d'exécution peut varier du simple au centuple avec des appels à des modules externes.


Si tes modules externes multiplient par 100 le temps d'éxécution d'un de tes scripts, je ne saurais que trop te conseiller de t'en débarasser.

sircam a écrit :

Et le nombre d'emails à envoyer peut être appelé à changer.
J'espère que tu ne vas pas changer un timeout global pour qu'une fonction donnée puisse passer dans un contexte donné... Enfin, quand je dis j'espère, tu fais comme tu veux [:itm]


Etant donné qu'il ne souhaite pas refaire son code, je vois pas trop comment il pourrait faire autrement.  
Maintenant c'est vrai aussi qu'il pourrait choisir une des solutions que tu as proposées ...

n°1441079
sircam
I Like Trains
Posté le 12-09-2006 à 15:19:54  profilanswer
 

anapajari a écrit :

1° t'parles de moi la?
 
2° Si tes modules externes multiplient par 100 le temps d'éxécution d'un de tes scripts, je ne saurais que trop te conseiller de t'en débarasser.
 
Etant donné qu'il ne souhaite pas refaire son code, je vois pas trop comment il pourrait faire autrement.  
Maintenant c'est vrai aussi qu'il pourrait choisir une des solutions que tu as proposées ...


1°- j'parle de changer le timeout en fonction de la durée possible du script :o C'est assez aberrant.
 
2°- [:mlc] C'est pas ce que j'ai dit. J'ai dit que l'appel à un module externe peut prendre un temps extrêmement variable, à moins d'être toujours en asynchrone, ce qui n'est pas forcément souhaitable. Ex. : une vérification DNS.
 
3°- Ah oui, ça, c'est un choix [:spamafote]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1443539
marquis
Posté le 17-09-2006 à 08:32:52  profilanswer
 

Bon j'ai passé le timeout à 60 sec et rien n'y change. De toute facon ca n'a pas l'air de venir de là car quand j'exécute manuellement la tache CRON dans Webmin, elle met bien plus que 60 secondes à s'exécuter.
 
Mes emails s'envoient toujours en plusieurs exemplaire. Le problème n'est il pas plutot du coté de Qmail ?


---------------
Marquis
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Envoi d'une newsletter

 

Sujets relatifs
formulaire d'envoi[SQL] Reporting services + envoi de mail
envoi de mail après que quel q'un est remplie un formulaireenvoi d'un mail animé :
envoi de newsletter[résolu] newsletter : problème à l'envoi
envoi de newsletter depuis le serveur webEnvoi d'une newsletter vers 15000 abonnés
Envoi d'une newsletter par PHP.pb lors des tests d'envoi d'une Newsletter
Plus de sujets relatifs à : Envoi d'une newsletter


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR