Grupos de Google ya no admite nuevas publicaciones ni suscripciones de Usenet. El contenido anterior sigue siendo visible.

Un CGI para una lista de correos

Visto 0 veces
Saltar al primer mensaje no leído

Javier

no leída,
8 feb 1999, 3:00:008/2/99
a
Hola a todos,

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


Juan Manuel Doren

no leída,
8 feb 1999, 3:00:008/2/99
a
No se perl pero cuando he enviado mails de esta forma (a suscriptores de un
servicio de informacion y no spamm) he debido poner un tiempo de espera entre
mail y mail (en realiad cada 20 mails) para no sobrecargar el servidor.

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

Guille (Bisho)

no leída,
10 feb 1999, 3:00:0010/2/99
a
> 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!!

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


Javier

no leída,
10 feb 1999, 3:00:0010/2/99
a
> 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

Guille (Bisho)

no leída,
10 feb 1999, 3:00:0010/2/99
a
> > 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

Juan Manuel Doren

no leída,
10 feb 1999, 3:00:0010/2/99
a
perl tiene un wait o algo asi?
si no lo tiene podrias encerrarte en un loop mientras la hora no sea mayor en n
segundos a la hora que habia al empezar el loop


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

Juan Manuel Doren

no leída,
10 feb 1999, 3:00:0010/2/99
a
parece que vamos a enseñar a hacer spamm :)....

> 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&

<Dr. Jorge Luis de la Osa Palacio>

no leída,
10 feb 1999, 3:00:0010/2/99
a
Si lo que buscas es para manejar una lista de discusion y esta es por
ejemplo en linux existe una herramienta llamada mailman, este te sirve
como un mayordomo (manejador de lista de correo), tiene interfase WWW,
lo cual te permite su administracion mas facil, entre sus
caracteristicas estan Envoltura por C, basado en Python, Control via WWW,
Extensible y Comprensible, y su Fuente es abierta.

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

Deranet Internet

no leída,
10 feb 1999, 3:00:0010/2/99
a
> 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...

Todo va bajo Linux.

Os agradezco a todos la ayuda prestada.

Un saludo,

Javier

Guille (Bisho)

no leída,
11 feb 1999, 3:00:0011/2/99
a
> > 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.

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


----------------------------------------------------

0 mensajes nuevos