• Publicidad

Envío de emails con Perl

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Notapor explorer » 2008-01-09 18:19 @805

Bueno, si te permite enviar el correo en el To:, entonces ya tienes una posibilidad de envío de los correos.

En cuanto al error, he hecho lo de siempre (buscarlo en Google: http://www.google.es/search?q=sorry%2C+ ... =firefox-a ) y me sale que la mayoría dicen que es un fallo de autenticación (es necesario autenticarse, PERO en
http://support.netfirms.com/article.php?id=672
dice que puede deberse, también, a otra causa: que el dominio del destinatario no esté propagada por los servidores de nombres (vamos, que no está reconocido como dominio real).

Mi servidor de correo es propio. Quiero decir que yo tengo una empresa de alojamiento y damos servicio de correo y web. El servidor usa el sendmail, con algunas limitaciones que ya te comenté antes.

Nosotros solemos cobrar por tráfico (el espacio en disco duro y la ocupación de CPU es bajísima en la mayoría de los casos).

Dudo que exista servidores que permitan el envío de correo de forma masiva sin limitación porque podría ser denunciado como SPAM y quedar bloqueado. Es un asunto complicado. En cambio, si se dice que el número de correos a enviar está dentro de unos límites y, sobre todo, que los correos van a salir a una cierta cadencia, entonces no veo problemas en la mayoría de los servidores.

Yo, creo, que tu problema es de software.

Mira, he hecho una prueba, pero en modo CGI, con el siguiente programa:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use CGI qw/:standard/;
use CGI::Carp qw(fatalsToBrowser);
use MIME::Lite;
use strict;

my $host     = '1xx.xxx.xxx.xx';

my $msg = MIME::Lite->new(
    From    => '[email protected]',
    To      => '[email protected]',
    Cc      => '[email protected]',
    Subject => 'CGI email',
    Data    => "FUNCIONA",
);

$msg->send('smtp', $host, AuthUser => 'xxxxxx', AuthPass => 'yyyyyy');

print header,start_html,end_html;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Y sí que me ha funcionado. Lo he ejecutado 100 veces (for i in $(seq 1 100); do ./manda_email.pl; done) y han llegado todos y sin mensajes de error. La versión de MIME::Lite es la 3.01. Y no es necesario Authen::SASL porque se está ejecutando en el propio servidor que va a enviar los correos (está permitido enviar correo desde el propio servidor web).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14477
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Publicidad

Notapor teamvipconnectz » 2008-01-10 01:41 @112

Hola explorer. Hice la prueba con el script que mencionas en el post anterior y estoy completamente seguro que está bien como tu lo dices pero a mi me sigue saliendo el mismo error con el que sueño ya todos los días (yo sigo pensando que lo que falla es el servidor de email que contraté).

¿En tu empresa de alojamiento, venden servicio para envío de emails (hosting email)? ¿Qué empresa es? o donde puedo ver información de la empresa?

Yo también se que eso de "ilimitado" es una gran mentira pero bueno mi intención es que me permita hacer una buena cantidad de envió de emails sin ningún problema (aclarando, estoy totalmente en contra del spam porque veo que hoy en día cualquier persona que intenta hacer envío masivo de emails lo primero que se piensa es que es por spam porque es lo mas común).

Una ultima duda, si mi servidor de hosting me permite enviar solo 200 emails por hora, ¿puedo de esta manera adaptar el script para que se haga el envío de los emails más lento, y así no superar los 200 emails por hora? (usando Timeout)

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$msg->send('smtp', $host, Timeout=>20, AuthUser => 'xxxxxx', AuthPass => 'yyyyyy');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Si es así, ¿qué desventajas y ventajas tiene el uso de Timeout=>20 ?
¿O qué problemas podría tener al usarlo de esta manera?
teamvipconnectz
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2008-01-02 20:33 @898

Notapor explorer » 2008-01-10 03:59 @208

El Timeout se refiere al tiempo máximo de envío de solo esa conexión. Si solo envías un correo con esa línea, pues se refiere al tiempo máximo para enviar solo ese correo.

Una forma de distribuir los correos en un plazo largo de tiempo sería con la función sleep(). Coges la calculadora y a echar cuentas. Más o menos, sale a unos diez segundos por correo. Bueno, pues ponemos un sleep(10) o un poco menos y así tenemos garantizado que van a salir todos.

En cuanto a lo de mi empresa, mejor lo hablamos de forma privada. Entra en mi perfil y mándame un correo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14477
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Anterior

Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 21 invitados