Envoi d'une newsletter - PHP - Programmation
Marsh Posté le 11-09-2006 à 09:25:41
Code :
|
Marsh Posté le 11-09-2006 à 10:16:57
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 ?
Marsh Posté le 11-09-2006 à 10:19:34
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...
Marsh Posté le 11-09-2006 à 10:36:01
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.
Marsh Posté le 11-09-2006 à 10:42:36
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
Marsh Posté le 11-09-2006 à 10:57:55
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? |
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é.
Marsh Posté le 11-09-2006 à 14:07:29
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 ?
Marsh Posté le 11-09-2006 à 14:18:33
marquis a écrit : Chani_t |
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.
Marsh Posté le 11-09-2006 à 14:23:48
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 ?
Marsh Posté le 11-09-2006 à 14:32:23
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?
Marsh Posté le 12-09-2006 à 09:35:03
ReplyMarsh Posté le 12-09-2006 à 11:14:49
Bah tu fais du traitement par lots!
Marsh Posté le 12-09-2006 à 12:33:22
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
Marsh Posté le 12-09-2006 à 12:36:13
il y a plus de 1000 personnes. Vous me conseillez d'augmenter le timeout à combien ?
Marsh Posté le 12-09-2006 à 13:25:48
anapajari a écrit : |
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
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.
4°- Si c'est pour faire ça, autant ne pas le faire et envoyer 1 mail par destinataire.
Toute la nuance entre une apparence propre, finie et professionnelle et... le reste. La touche en plus, quoi.
Marsh Posté le 12-09-2006 à 13:30:14
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
Marsh Posté le 12-09-2006 à 13:42:14
Mais c'est quoi ce brol à la pé-h-pé ?
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
Marsh Posté le 12-09-2006 à 13:52:48
Tu as peut etre une meilleure solution à me proposer ?
Marsh Posté le 12-09-2006 à 14:21:02
sircam a écrit : Mais c'est quoi ce brol à la pé-h-pé ? |
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. |
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 ...
Marsh Posté le 12-09-2006 à 15:19:54
anapajari a écrit : 1° t'parles de moi la? |
1°- j'parle de changer le timeout en fonction de la durée possible du script C'est assez aberrant.
2°- 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
Marsh Posté le 17-09-2006 à 08:32:52
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 ?
Marsh Posté le 11-09-2006 à 08:40:58
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