• Publicidad

Envío masivo boletín de noticias

Aquí encontrarás todo lo que sea específicamente acerca de módulos de Perl. Ya sea que estás compartiendo tu módulo, un manual o simplemente tienes una duda acerca de alguno.

Envío masivo boletín de noticias

Notapor nestaredon » 2010-11-23 10:27 @477

Hola a todos,

Me preguntaba si existe algún módulo capaz de hacer un envío masivo de e-mails sin que sean etiquetados como SPAM. Muchas gracias.
nestaredon
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2010-11-23 10:24 @475

Publicidad

Re: Envío masivo boletín de noticias

Notapor explorer » 2010-11-23 10:33 @481

Bienvenido a los foros de Perl en Español, nestaredon.

Que un correo sea etiquetado como SPAM depende del contenido, del idioma en que está escrito y de la dirección del servidor de correo que lo envía (el país donde se localiza ese servidor).

Luego, legalmente, también hay países que tienen regulado este tipo de envíos. En algunos de ellos, si se envía correo sin permiso de los destinatarios, puedes ganarte una pena de cárcel y/o una fuerte multa.

Como regla general, cualquier programa de los de listas de correo, te puede valer, como el antiquísimo majordomo, escrito en Perl, o el más moderno mailman, escrito en Python.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Envío masivo boletín de noticias

Notapor Fegna » 2010-11-23 13:15 @593

Otra forma es hacerse un pequeño programa para que pueda enviarlo.

Un ejemplo sería:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!C:/perl/bin/perl.exe
  2.  
  3. use strict;
  4. use MIME::Lite;
  5.  
  6. my (
  7.         $mi_asunto, $mi_mensaje,
  8. );
  9.  
  10. $mi_asunto = 'ASUNTO DEL CORREO';
  11.  
  12. # Abro un archivo HTML que contiene el template, donde los campos variables van entre corchetes. Ej: {RUT}
  13. open(HTML, 'D:\EnvioMail\template.html');
  14. while (<HTML>)
  15. {
  16.         $mi_mensaje .= $_;
  17. }
  18. close HTML;
  19.  
  20. open(MAIL_FILE, $ARGV[0]);
  21. while (<MAIL_FILE>)
  22. {
  23.         my $line = $_;
  24.         chomp($line);
  25.         next if ($line =~ /^#/);
  26.         my ($rut, $nombre, $email, $monto) = split(/;/, $line);
  27.        
  28.         my $asunto = $mi_asunto;
  29.         my $mensaje = '';
  30.         $mensaje = $mi_mensaje;
  31.  
  32.         $mensaje =~ s/{RUT}/$rut/;
  33.         $mensaje =~ s/{NOMBRE}/$nombre/;
  34.         $mensaje =~ s/{MONTO}/$monto/;
  35.         $mensaje =~ s/{EMAIL}/$email/;
  36.  
  37.         my $mail = MIME::Lite->new(
  38.                 'To' => $email,
  39.                 'From' => '[email protected]', # Dirección de salida del correo
  40.                 'Subject' => $asunto,
  41.                 'Type' => 'text/html',
  42.                 'Data' => $mensaje,
  43.                 );
  44.         print "Enviando a;$email;";
  45.         $mail->send('smtp', 'localhost');
  46.         print "Enviado\n";
  47. }
  48. close MAIL_FILE;
  49.  
  50. exit(0);
  51.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Lo ejecuto como enviarmail.pl archivo.csv, donde archivo.csv van los datos de los correos a enviar (en el ejemplo, los campos son RUT, que es el DIN de Chile, nombre, email del destinatario y monto). Como es lógico, el archivo Perl debe ser guardado con el nombre enviarmail.pl, sino hay que colocar el nombre con el cual lo llamamos en lugar del señalado :D
Fegna
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2008-01-08 09:29 @437
Ubicación: Santiago, Chile

Re: Envío masivo boletín de noticias

Notapor explorer » 2010-11-23 13:41 @611

Este tipo de programas sirven para enviar los mensajes uno a uno, por lo que si nestaredon quiere enviar 28.000 mensajes, suponiendo que cada mensaje tarde en salir un segundo, completará la tarea en poco más de 8 horas... y si hace cuentas de lo que le cuesta tener encendido su ordenador más la conexión a Internet, a lo mejor no le compensa.

En cambio, los programas de gestión de listas de correo suelen ser más inteligentes, y "agrupan" los mensajes enviados a cada dominio, para enviar un solo correo a todos los destinatarios de ese dominio.

Ejemplo: si tengo una lista con 28.000 usuarios, que todos ellos tienen como dirección de correo en los dominios de gmail.com, yahoo.com, hotmail.com y apple.com, el programa solo enviará 4 correos: por cada dominio, hará una conexión, y mandará la carta a todos los destinatarios de ese dominio.

(Bueno, en realidad serían más correos los que tendría que enviar, porque cada servidor admite solo un determinado número de destinatarios por cada envío).

De todas formas, muchas gracias por tu aporte, Fegna. Puede servir para muchos otros usos.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Envío masivo boletín de noticias

Notapor Fegna » 2010-11-23 14:12 @633

Ufffff, yo lo envío a unos 80.000 :shock:

Pero la idea era esa, ayudar. Si le interesa y puede enviarlo así, puede utilizarlo; sino, puede tomar la idea, o desecharla.
Fegna
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2008-01-08 09:29 @437
Ubicación: Santiago, Chile

Re: Envío masivo boletín de noticias

Notapor Fegna » 2010-11-24 11:51 @535

Ahora te puedo dar datos un poco más reales, con el método utilizado (a pesar de que lo hago sobre Windows, que es una desventaja grande) acabo de enviar 54.487 correos en 1 hora, 19 minutos (prueba de la potencia de Perl :D )
Fegna
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2008-01-08 09:29 @437
Ubicación: Santiago, Chile

Re: Envío masivo boletín de noticias

Notapor explorer » 2010-11-24 12:07 @546

No. No es muestra de la potencia de Perl, sino del tamaño de tu caudal de la conexión a Internet y de las prestaciones de tu MTA (de si es capaz de agrupar destinatarios. Tendrás que verlo en su log).

El cuello de botella casi siempre será Internet. Los ordenadores suelen ser mucho más rápidos que las conexiones y transmisiones. Prueba a recargar una página web que tengas cacheada en local, y luego la recargas pulsando Control o mayúsculas o pulsando F5 o Control+R (depende del navegador). Verás la diferencia. Dependes de la velocidad de las conexiones entre tu ordenador y tu MTA, y los retrasos que cada servidor, en cada nodo, agregue.

54.487 correos en 1 hora y 19 minutos son casi 12 correos por segundo. No está mal, casi se podría calcular el tamaño en bytes de cada mensaje.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Envío masivo boletín de noticias

Notapor nestaredon » 2010-11-25 11:02 @501

¡Muchas gracias a los dos! Voy a intentar usar Majordomo pero la segunda idea me la guardo. Pronto os comentaré los resultados. ¡Un saludo!
nestaredon
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2010-11-23 10:24 @475

Re: Envío masivo boletín de noticias

Notapor explorer » 2010-11-25 20:56 @914

Yo no usaría majordomo... es un software que no ha cambiado en diez años...

Hay otras distribuciones en Perl dedicadas a la gestión de listas de correo. Por ejemplo:

* Mail::SimpleList - Sencillo
* Siesta - Completo
* Mail::Salsa - Interesante
* Mail::Bulkmail - Platform independent mailing list module. Este es para enviar muchos, muchos correos. Algo así como más de 50.000 correos por hora.

y supongo que alguno más que se puede encontrar por CPAN.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Módulos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron