He creado un pequeño cgi en perl para enviar mensajes a una
lista de correo, y me gustaría que le echarais un vistazo.
Aunque parece funcionar (con una lista pequeña de emails)
no se si lo podrá hacer con una mucho mas grande (unos
3.000).
Si veis algún error o inconveniente, me gustaria que
me lo comunicarais. ¡¡Aún estoy aprendiendo a programar
en Perl, ... por eso os lo pregunto!!
-------------------------
El mensaje es enviado a través de un formulario, con
solo dos campos, el Titulo, y el mensaje.
El CGI, recibe esos valores, y comienza un bucle
leyendo un fichero con los emails. Uno por linea.
Aquí tenéis el código,
-----------------------------------------------------------------
#!/usr/local/bin/perl
require ('cgi-lib.pl');
&ReadParse(*field);
$titulo = $field{'titulo'} ;
$mensaje = $field{'mensaje'} ;
print "Content-type: text/html\n\n";
print "<html>\n" ;
print "<head>\n" ;
print "<title>Enviando mensaje</title>\n" ;
print "<body>";
print "Se esta enviado el siguiente mensaje ...<br><br>";
print "$titulo <br><br>";
print "$mensaje";
open(MENSAJE,"lista-correo.txt");
while (<MENSAJE>)
{
$lines = <MENSAJE>;
open (MAIL, "|/usr/lib/sendmail -t") || die "Can't open /usr/lib/sendmail!\n";
print MAIL "To: $lines ($lines)\n";
print MAIL "From: email\@dominio.com (Remite)\n";
print MAIL "Subject: $titulo \n\n"; print MAIL "$mensaje \n";
close(MAIL);
}
close (MENSAJE);
print "</body>\n" ;
print "</html>\n" ;
exit 0 ;
return 1 ;
-----------------------------------------------
Un saludo,
Javier
----------------------------------------------------
Los archivos de WEB-ES pueden ser consultados en:
http://listserv.rediris.es/archives/web-es.html
----------------------------------------------------
de todos modos un archivo de logs es buena idea para saber desde donde
retomar el envio si hubiese algun problema.
----------
> De: Javier <javi...@arrakis.es>
> A: WEB...@LISTSERV.REDIRIS.ES
> Asunto: [WEB-ES] Un CGI para una lista de correos
> Fecha: lunes 8 de febrero de 1999 12:48
La lista de correo la montas con algún programa especializado (majordomo
o así)?
Si es así, lo que deberias hacer es que el cgi solo envie un mensaje al
majordomo, y que este lo redistribuya, que es su trabajo, y puedes
especificar tiempos entre mensajes, distintos servidores de correo, etc,
todo para evitar la saturación.
En primero en el laboratorio de programación algunos hacíamos scripts en
bash (mucho mas lentos) que enviaban mensajes a todos los usuarios (unos
1000 o así) y si no poniamos un retardo entre mensaje y mensaje
colapsábamos el servidor de correo.
Aparte la otra pega es que el usuario puede estar viendo la dichosa
página mucho tiewmpo mientras se envian todos los mensajes, puede pensar
que se ha colgado, y volverlo a enviar... Los del final de la lista
seguro que casi no recibirán ninguno. Nadie esperará tanto tiempo y
hasta es posible que de timeout...
> -------------------------
> El mensaje es enviado a través de un formulario, con
> solo dos campos, el Titulo, y el mensaje.
>
> El CGI, recibe esos valores, y comienza un bucle
> leyendo un fichero con los emails. Uno por linea.
>
> Aquí tenéis el código,
>
> -----------------------------------------------------------------
>
> #!/usr/local/bin/perl
> require ('cgi-lib.pl');
> &ReadParse(*field);
>
> $titulo = $field{'titulo'} ;
> $mensaje = $field{'mensaje'} ;
>
> print "Content-type: text/html\n\n";
> print "<html>\n" ;
> print "<head>\n" ;
> print "<title>Enviando mensaje</title>\n" ;
> print "<body>";
> print "Se esta enviado el siguiente mensaje ...<br><br>";
> print "$titulo <br><br>";
> print "$mensaje";
>
> open(MENSAJE,"lista-correo.txt");
> while (<MENSAJE>)
> {
>
> $lines = <MENSAJE>;
Hay un equivalente más fácil para lo de arriba:
open(MENSAJE,"lista-correo.txt");
foreach $lines (<MENSAJE>) {
> open (MAIL, "|/usr/lib/sendmail -t") || die "Can't open /usr/lib/sendmail!\n";
>
> print MAIL "To: $lines ($lines)\n";
> print MAIL "From: email\@dominio.com (Remite)\n";
> print MAIL "Subject: $titulo \n\n"; print MAIL "$mensaje \n";
Aqui no estaría mal que añadieras algo de información sobre mime y
enconding del texto...
Un script mio escribe lo siguiente:
From: Host del Planets <pla...@eurielec.etsit.upm.es>
Subject: [PLANETS] Envio de Turno RAZA $i
X-Mailer: Script Turnos del Planets (bisho)
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
> close(MAIL);
>
> }
>
> close (MENSAJE);
>
> print "</body>\n" ;
> print "</html>\n" ;
>
> exit 0 ;
> return 1 ;
--
Chao ___<E-MAILS>__________________________________
Guille! | gui...@redestb.es bi...@writeme.com |
\|||||||/ | bi...@eurielec.clubs.etsit.upm.es |
< o o > |___<WEBS + Importantes>_____________________|
\ L / |*PAT: http://personal.redestb.es/guille |
---oOOo-------oOOo--- | (Pagina Alternativa de Teleko) |
Guillermo Pérez Pérez |*Eurielec Linux 2.1!!! |
Estudiante ETSIT (UPM) | http://www.etsit.upm.es/~eurielec/linux/ |
|____________________________________________|
SUERTE A LOS ESTUDIANTES QUE TIENEN EXAMENES COMO YO
Que se haga justicia. Que se juzgue a Pinochet
----------------------------------------------------
Normas para el correcto uso del correo electrónico:
http://www.rediris.es/mail/estilo.html
----------------------------------------------------
No, realmente, envia los mensajes directamente al servidor de
correo. De todas formas, como podria hacer que dentro del cgi,
hubiese algún retardo, para evitar la saturación.
Un saludo,
Javier
Siempre hay algún comando para hacer... sleep, wait, o algo así...
Otra cosa... tienes que intentar que el cgi sólo pase a otro programa
los datos, para que así acabe rápidamente y el usuario no se eternice...
Que plataforma usas???
Si es Linux/Unix lo más fácil es hacer un usuario que todos los mensajes
que reciba los envie a los de la lista, y desde el cgi se envie sólo a
esta cuenta.
Si no puedes hacer que el cgi eejecute otro programa en background, que
sea el que de verdad envia todos los mensajes...
--
Chao ___<E-MAILS>__________________________________
Guille! | gui...@redestb.es bi...@writeme.com |
\|||||||/ | bi...@eurielec.clubs.etsit.upm.es |
< o o > |___<WEBS + Importantes>_____________________|
\ L / |*PAT: http://personal.redestb.es/guille |
---oOOo-------oOOo--- | (Pagina Alternativa de Teleko) |
Guillermo Pérez Pérez |*Eurielec Linux 2.1!!! |
Estudiante ETSIT (UPM) | http://www.etsit.upm.es/~eurielec/linux/ |
|____________________________________________|
SUERTE A LOS ESTUDIANTES QUE TIENEN EXAMENES COMO YO
Que se haga justicia. Que se juzgue a Pinochet
pseudo lenguaje
if contador>cuantosmails then
hora = time
while (hora+segundos > time )
endwhile
contador=1
else
contador = contador+1
endif
----------
> De: Javier <javi...@arrakis.es>
> A: WEB...@LISTSERV.REDIRIS.ES
> Asunto: Re: [WEB-ES] Un CGI para una lista de correos
> Fecha: martes 9 de febrero de 1999 23:49
>
> > La lista de correo la montas con algún programa especializado (majordomo
> > o así)?
>
> No, realmente, envia los mensajes directamente al servidor de
> correo. De todas formas, como podria hacer que dentro del cgi,
> hubiese algún retardo, para evitar la saturación.
>
> Un saludo,
>
> Javier
> Si es Linux/Unix lo más fácil es hacer un usuario que todos los mensajes
> que reciba los envie a los de la lista, y desde el cgi se envie sólo a
> esta cuenta.
Si usas Linux lo mejor podria ser colocar majordomo, ahora la ventaja de un
programa
que envie correos uno a uno es poder personalizar cada uno de los mensajes (Sr.
Fulano)
Otra forma es que el programa en vez de mandar n correos coloque en el CC
(Courtesy Copy) o en el BCC (Blind Courtesy Copy) los mails de las victimas,
perdon destinatarios.
La segunda opcion es mas limpia porque no le llega a cada victima la lista
completa de sus compañeros de tormento.
de todos modos lo ideal es no ejecutar estos scripts via browser sino telnet,
en linux
nohup miprograma&
Se basa en paginas Web y CGI, lo puedes ver en http://www.list.org
Saludos a todos,
--
,>'?'<
( o o )
******************** ooOO-(_)-OOoo *********************
* Dr. Jorge Luis de la Osa Palacio *
* Laboratorio de Neurofisiologia *
* ICBP "Victoria de Giron" *
* 146 No. 3102, Playa. C. Habana. *
* La Habana 16. CUBA *
* Telefono voz: (537) 219511 ext 343, ext 206 *
* Fax (537) 336257 *
* Email: del...@giron.sld.cu *
********************************************************
On Wed, 10 Feb 1999, Guille (Bisho) wrote:
> > > La lista de correo la montas con algún programa especializado (majordomo
> > > o así)?
> >
> > No, realmente, envia los mensajes directamente al servidor de
> > correo. De todas formas, como podria hacer que dentro del cgi,
> > hubiese algún retardo, para evitar la saturación.
>
> Siempre hay algún comando para hacer... sleep, wait, o algo así...
>
> Otra cosa... tienes que intentar que el cgi sólo pase a otro programa
> los datos, para que así acabe rápidamente y el usuario no se eternice...
>
> Que plataforma usas???
>
> Si es Linux/Unix lo más fácil es hacer un usuario que todos los mensajes
> que reciba los envie a los de la lista, y desde el cgi se envie sólo a
> esta cuenta.
>
> Si no puedes hacer que el cgi eejecute otro programa en background, que
> sea el que de verdad envia todos los mensajes...
>
> --
> Chao ___<E-MAILS>__________________________________
> Guille! | gui...@redestb.es bi...@writeme.com |
> \|||||||/ | bi...@eurielec.clubs.etsit.upm.es |
> < o o > |___<WEBS + Importantes>_____________________|
> \ L / |*PAT: http://personal.redestb.es/guille |
> ---oOOo-------oOOo--- | (Pagina Alternativa de Teleko) |
> Guillermo Pérez Pérez |*Eurielec Linux 2.1!!! |
> Estudiante ETSIT (UPM) | http://www.etsit.upm.es/~eurielec/linux/ |
> |____________________________________________|
> SUERTE A LOS ESTUDIANTES QUE TIENEN EXAMENES COMO YO
>
> Que se haga justicia. Que se juzgue a Pinochet
>
>
Todo va bajo Linux.
Os agradezco a todos la ayuda prestada.
Un saludo,
Javier
De hecho hoy un amigo y yo hemos estado haciendo un script en bash para
coger un mensaje que le pasa el procmail y mandarlo a los integrantes de
una lista...
> > Si no puedes hacer que el cgi eejecute otro programa en background, que
> > sea el que de verdad envia todos los mensajes...
>
> Todo va bajo Linux.
Chachi :)
--
Chao ___<E-MAILS>__________________________________
Guille! | gui...@redestb.es bi...@writeme.com |
\|||||||/ | bi...@eurielec.clubs.etsit.upm.es |
< o o > |___<WEBS + Importantes>_____________________|
\ L / |*PAT: http://personal.redestb.es/guille |
---oOOo-------oOOo--- | (Pagina Alternativa de Teleko) |
Guillermo Pérez Pérez |*Eurielec Linux 2.1!!! |
Estudiante ETSIT (UPM) | http://www.etsit.upm.es/~eurielec/linux/ |
|____________________________________________|
SUERTE A LOS ESTUDIANTES QUE TIENEN EXAMENES COMO YO
Que se haga justicia. Que se juzgue a Pinochet
----------------------------------------------------