Envoi d'une newsletter vers 15000 abonnés - PHP - Programmation
Marsh Posté le 28-06-2005 à 13:18:09
php : system() ou exec() je sais plus
Marsh Posté le 28-06-2005 à 13:46:37
pourquoi ne pas utiliser une liste de diffusion ???
un seul envoi avec php et ensuite c'est le serveur de messagerie qui gère les 15000 abonnés
Marsh Posté le 28-06-2005 à 14:00:14
soju a écrit : pourquoi ne pas utiliser une liste de diffusion ??? |
en principe les serveurs de mail refusent le forward à un tel nombre d'adresses... limité à une vingtaine en principe
Marsh Posté le 28-06-2005 à 14:00:40
mais ça sous entend qu'il y a un serveur de messagerie? Je ne sais pas s'il y en a un ou du moins si j'y ai accès!
Mais PHP envoi quoi à ce moment là au serveur de messagerie?
Marsh Posté le 28-06-2005 à 14:00:59
toutoune a écrit : [...] |
(1)Pourquoi ne pas lancer le script via cron ?
(2)Toujours via cron, tu peux rediriger la sortie standard vers un fichier de log avec >>. Et sinon tu recevra un mail en cas de problème automatiquement.
Marsh Posté le 28-06-2005 à 14:06:51
ok, mais l'envoi n'est jamais initié à des heures fixes. Donc dans le cron, je déclare quoi? Je peux établir un cron avec exec()?
Marsh Posté le 28-06-2005 à 14:09:23
jagstang a écrit : en principe les serveurs de mail refusent le forward à un tel nombre d'adresses... limité à une vingtaine en principe |
en fait je parlais de liste de diffusion (sympa, majordomo...etc), pas de simple forward
Marsh Posté le 28-06-2005 à 14:10:35
toutoune a écrit : Salut à tous, |
t'es obligé d'utiliser php? car c'est pas le meilleur langage pour faire un systeme de newsletter a cause du timeout.
Sinon, tu as ce script gratuit en perl:
http://www.perl-gratuit.com/perl/p [...] index.html
Marsh Posté le 28-06-2005 à 14:10:41
toutoune a écrit : ok, mais l'envoi n'est jamais initié à des heures fixes. Donc dans le cron, je déclare quoi? Je peux établir un cron avec exec()? |
Faut voir avec ton hébergeur si tu as accès au crontab, c'est rare...
Marsh Posté le 28-06-2005 à 14:12:12
et si tu envoies à tout le monde d'un coup en CCi ? .. c comme ça que j'ai fait moi avec online (car le timeout etait trop court) (mais bon yavé que 3000 adresses)
un truc comme ça :
Code :
|
Marsh Posté le 28-06-2005 à 15:27:08
oui je peux faire du cron, c'est un serveur dédié que l'on peut administrer...
Le problème du CCi c'est que c'est bien souvent vu comme du spam...
Le perl je connais pas du tout... mais le script tout fait donné ci dessus ne me permet pas d'utiliser la génération de la newsletter qui est déjà en place et assez complexe! (gestion des langues, interaction avec la BD...)
Marsh Posté le 28-06-2005 à 15:30:03
toutoune a écrit : c'est un serveur dédié que l'on peut administrer... |
donc tu peux installer un gestionnaire de liste de diffusion
Marsh Posté le 28-06-2005 à 15:40:13
sans doute
mais tu aurais un peu plus de détails?
la reprise en cas de plantage est-elle possible?
actuellement, on utilise un flag pour chaque email de la BD pour savoir si la newsletter a été envoyée... et on reprend les emails qui n'ont pas reçu ce flag pour la reprise!
Marsh Posté le 28-06-2005 à 16:17:43
toutoune a écrit : mais tu aurais un peu plus de détails? |
- http://www.greatcircle.com/majordomo/
- http://www.sympa.org/
- http://www.gnu.org/software/mailman/
ces 3 produits gèrent bien sur les pbs d'envois
Marsh Posté le 28-06-2005 à 16:52:26
Le pb avec ces gestionnaires, c'est que je ne peux pas interagir avec ma BD MySQL dans laquelle mes mails sont stockés, mais surtout que je ne peux pas générer ma newsletter à partir de l'interface PHP déjà existante (la news...)
Je m'y perd un peu, est ce que cette interaction est possible avec ces gestionnaires?
Marsh Posté le 28-06-2005 à 17:46:07
Peut etre que je pourrais me développer une application Perl pour mes besoins... mais...
quel est l'intérêt pour moi d'utiliser par exemple un script Perl avec MIME::Lite et send plutot que la fonction mail() de PHP?
Mélanger du Perl et du PHP (pour récupérer les emails ds la BD) c'est mal? C'est possible d'interroger une BD avec Perl?
Marsh Posté le 28-06-2005 à 22:43:13
ben php a été créé a partir de perl, donc normalement on devrait pouvoir faire les memes chose.
Mais melanger, je ne pense pas que ca soit possible.
Marsh Posté le 29-06-2005 à 00:00:20
et sur ma question de favoriser Perl plutot que PHP pour l'envoi?
Marsh Posté le 29-06-2005 à 02:03:37
Moi je suis plutôt pour utiliser un logiciel de mailing-list qui est quand même fait pour ça Ensuite depuis un script PHP, tu peux utiliser la fonction system() qui appelera un executable ("mail" par exemple qui permet d'envoyer des emails en ligne de commande) avec comme paramètres les données de ta base que tu enverras à l'adresse spéciale de la mailing list. Le logiciel de mailing list, lui se chargera d'envoyer le mail à tous les abonnées.
Comme logiciel de mailing, il y a aussi ecartis qui est pas mal et que j'utilise sans problème
EDIT: je viens de me rendre compte que la solution avec system() n'a aucun intérêt puisqu'il y a la fonction mail() dans PHP. Autant pour moi
Marsh Posté le 29-06-2005 à 06:42:30
toutoune a écrit : Peut etre que je pourrais me développer une application Perl pour mes besoins... mais... |
+1 pour la solution mailing list.
Ayant bossé sur sympa, je peux te dire que ça repondrait parfaitement à tes besoins : Ce serveur de mailing-list gère ses abonnés à partir d'une bd mysql. Il y aurait donc la possibilité de faire un petit script d'import de ta bd.
Un p'tit lien pour Perl/Mysql : http://search.cpan.org/~rudy/DBD-m [...] b/Mysql.pm
Pour ce qui est de l'envoie sur les listes, tu pourra très bien gérer le bordel à partir de tes scripts php en envoyant tes instructions par mail au robot de mailing-list.
Et 15000 abonnés c'est pas grand chose, j'ai eu l'occasion de mettre en place un serveur qui gérait quelques centaines de listes, certaines dépassant les 100 000 abonnés : Aucun pb !! ce qui n'était pas le cas avec les serveurs exchange =)... L'algo d'envoie des mails est vraiment efficace.
Voilà, bonne journée !!
Marsh Posté le 29-06-2005 à 12:54:33
toutoune a écrit : et sur ma question de favoriser Perl plutot que PHP pour l'envoi? |
ben avec perl, tu peux travailler en tache de fond, ce qui n'est pas possible avec php.
Marsh Posté le 29-06-2005 à 13:20:38
super merci à tous pour vos réponses, je vais me documenter!
Marsh Posté le 29-06-2005 à 13:28:04
mais j'ai pas trop compris comment tu faisais pour ta newsletter en php qui durait 6 heures
tu n'avais pas de time-out? ca ne prennait pas trop de resource quand un script php tourne aussi longtemps. Un jour j'avais tester en local, he bien mon ordinateur utilisait 100% des resources.
Marsh Posté le 29-06-2005 à 13:53:40
et bien en fait on lançait le script en ligne de commande. Dans ce script il y a un mélange de PHP/Shell et des boucles, et apparement l'envoi se fait par groupe de 500 adresses...
Bref, je viens d'arriver et suis là pour refaire le système d'envoi... à suivre!
Marsh Posté le 30-06-2005 à 10:19:04
à propos de SYMPA, il semblerait qu'à l'envoi vers une liste de type liste@domaine.com, les abonnés recoivent la newsletter avec le "To: liste@domaine.com", résultat, y a pas mal de clients mails qui filtrent ça et le considère comme du SPAM... y a pas moyen d'éviter cela?
Sinon autre question, lors de l'envoi d'un mail via SYMPA sur une liste, est-il possible de connaitre l'état d'avancement de l'envoi? Comment savoir quand il est fini?
Marsh Posté le 30-06-2005 à 14:38:16
fabien a écrit : ben avec perl, tu peux travailler en tache de fond, ce qui n'est pas possible avec php. |
C'est possible aussi avec PHP
Marsh Posté le 30-06-2005 à 21:35:55
ratibus a écrit : C'est possible aussi avec PHP |
ca marche comment?
Marsh Posté le 01-07-2005 à 09:47:22
Reply
Marsh Posté le 28-06-2005 à 12:57:31
Salut à tous,
je reprend le système d'envoi d'une newsletter sur un site qui envoie tous les 15 jours une newsletter vers environ 15000 abonnés.
Actuellement, l'envoi se fait via un script PHP lancé en ligne de commande depuis le serveur, et effectue l'envoi par vagues de 500 adresses.
Le problème c'est que ça prend près de 6h et que le script doit etre lancé sur le serveur par une personne qui s'y connait un peu.
Je dois mettre en place un système pour que l'envoi puisse être déclanché depuis une interface web, mais aussi avec une gestion des retours en cas de plantage du serveur par exemple.
Quelle peut etre une solution à mon problème?
Message édité par toutoune le 28-06-2005 à 12:58:45