Envoi d'une newsletter vers 15000 abonnés

Envoi d'une newsletter vers 15000 abonnés - PHP - Programmation

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
Reply

Marsh Posté le 28-06-2005 à 12:57:31   

Reply

Marsh Posté le 28-06-2005 à 13:18:09    

php : system() ou exec() je sais plus :D


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

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

Reply

Marsh Posté le 28-06-2005 à 14:00:14    

soju a écrit :

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


en principe les serveurs de mail refusent le forward à un tel nombre d'adresses... limité à une vingtaine en principe


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

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?

Reply

Marsh Posté le 28-06-2005 à 14:00:59    

toutoune a écrit :

[...]
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.(1)
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.(2)
[...]


(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.


---------------
http://yoyo.eurotchat.net -> Wednesday 14 September a 02:00:01 up 43 days, 11:47,  2 users,  load average: 0.07, 0.03, 0.00
Reply

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()?

Reply

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

Reply

Marsh Posté le 28-06-2005 à 14:10:35    

toutoune a écrit :

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?


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


---------------
Découvre le HFRcoin ✈ - smilies
Reply

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... [:sub42]


---------------
http://yoyo.eurotchat.net -> Wednesday 14 September a 02:00:01 up 43 days, 11:47,  2 users,  load average: 0.07, 0.03, 0.00
Reply

Marsh Posté le 28-06-2005 à 14:10:41   

Reply

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 :
  1. while ( $fetch = mysql_fetch_array($result) )
  2.     {
  3.     $bcc = $fetch['email'];
  4.     $headersbcc .= "Bcc: $bcc\r\n";
  5.     $n++;
  6.     }
  7.     $infos.= "<b>Nombre de mails à envoyer : $n;</b><br />";
  8.     $infos.= $headersbcc."<br />";
  9.    $Headers  = "Content-Type:text/html;charset=iso-8859-1\n";
  10.    $Headers .= "Content-Transfer-Encoding: 8bit\n";
  11.    $Headers .= $headersbcc;
  12.    $Headers.= "Return-path:erreurs@toto.com";
  13.    $from="toto";
  14.    $replyto="toto";
  15.    if(!email($from, $mailto, $sujet, $message, $replyto, $Headers))
  16.    {
  17.    $infos.="<font color=red>Probleme de l'envoi à $mailto</font><br />";
  18.    }
  19.    else
  20.    {
  21.    $listeenvoi.="Envoyé à ".$headersbcc." avec succès<br /> ";
  22.    }


Message édité par freed102 le 28-06-2005 à 14:21:47
Reply

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...)

Reply

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 ;)

Reply

Marsh Posté le 28-06-2005 à 15:40:13    

sans doute :p
 
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!

Reply

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

Reply

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?

Reply

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?

Reply

Marsh Posté le 28-06-2005 à 22:33:17    

:bounce:


Message édité par toutoune le 28-06-2005 à 22:33:37
Reply

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.


---------------
Découvre le HFRcoin ✈ - smilies
Reply

Marsh Posté le 29-06-2005 à 00:00:20    

et sur ma question de favoriser Perl plutot que PHP pour l'envoi?

Reply

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 :D


Message édité par onizuka_sensei le 29-06-2005 à 14:36:47
Reply

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...
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?


 
+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 !!


Message édité par astero-H le 29-06-2005 à 06:43:24
Reply

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.


---------------
Découvre le HFRcoin ✈ - smilies
Reply

Marsh Posté le 29-06-2005 à 13:20:38    

super merci à tous pour vos réponses, je vais me documenter!

Reply

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.


---------------
Découvre le HFRcoin ✈ - smilies
Reply

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!

Reply

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?

Reply

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 ;)

Reply

Marsh Posté le 30-06-2005 à 21:35:55    

ratibus a écrit :

C'est possible aussi avec PHP ;)


ca marche comment?  


---------------
Découvre le HFRcoin ✈ - smilies
Reply

Marsh Posté le 01-07-2005 à 09:47:22    

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed