• Publicidad

Envío de correos usando Mime::Lite y Net::SMTP

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

Envío de correos usando Mime::Lite y Net::SMTP

Notapor joshe766 » 2010-05-16 13:15 @593

Estimados Amigos:

Mis conocimientos son básicos, quien pueda por favor le solicito me ayude con lo siguiente:

Tengo un script para envío de correos, estos son enviados a través de MIME::Lite, pero éste me los envía sin firmar (sin firma de dominio, domain keys) y en el caso de hotmail los mensajes no llegan.

Para que los firme hago el envío con el módulo de Net::SMTP con autenticación, pero el problema radica que cuando encuentra en email invalido detiene el envío y no continúa; he tratado de encontrar qué parámetro debo poner para que salte los emails inválidos y siga enviado a los validos, pero no he podido encontrarlo, a continuación les pego el código, muchas gracias de antemano por su gentil ayuda.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub sendtextemail {
  2.  
  3. use MIME::Lite;
  4.  
  5. if ($smtp eq "1") {
  6.     use Net::SMTP;
  7.     MIME::Lite->send('smtp',$smtp_server, Timeout=>60, Debug=>0,
  8.                          AuthUser=>$user, AuthPass=>$pass);
  9.  
  10.  
  11.    $mailmsg = MIME::Lite->new(
  12.                   From  =>  $from,
  13.                   'Reply-to' =>  $reply,
  14.                   Sender =>  $sender,
  15.                   To   =>  $to,
  16.                   Subject  =>  $subjectline,
  17.                   Type     =>  "text/plain; charset=iso-8859-1",
  18.                   "X-Identifier:"  =>  "$subid-$username\n",
  19.                   "X-Ip:" =>  "$ip\n",
  20.                   Data     =>  "$message",
  21.    );
  22.     $mailmsg->add("Complaints-To" => "$emailabuse\n");
  23.     $mailmsg->send;
  24. }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
joshe766
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2010-04-26 16:50 @743

Publicidad

Re: Envío de correos usando Mime::Lite y Net::SMTP

Notapor explorer » 2010-05-16 13:31 @605

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

Yo creo que el problema está en el propio servidor SMTP, que te bloquea el envío de más correos...

Puedes activar el Debug para ver qué está haciendo.

Pero lo que también puedes hacer es reducir el Timeout, a por ejemplo, 10 o 20 segundos, de tal manera que corte la conexión rápidamente si no hay respuesta del servidor de correo.
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 de correos usando Mime::Lite y Net::SMTP

Notapor joshe766 » 2010-05-16 16:01 @709

Estimado explorer:

Muchas gracias por su pronta respuesta. El servidor envía normalmente los correos, pero al llegar a una dirección mal escrita o equivocada dice:

mal formed email adress

y detiene el envío. Lo que me gustaría es poner algún parámetro que al llegar a un email inválido lo salte y siga enviando a los demás.

En el módulo de MIME::Lite hay una parte donde dice:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
SkipBad

    If true doesnt throw an error when multiple email addresses are provided and some are not valid. See Net::SMTP::recipient() for details.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4



Pero no sé dónde modificar esto.


De nuevo gracias.
Última edición por explorer el 2010-05-16 16:34 @732, editado 2 veces en total
Razón: Tildes
joshe766
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2010-04-26 16:50 @743

Re: Envío de correos usando Mime::Lite y Net::SMTP

Notapor explorer » 2010-05-16 16:31 @730

Entonces, lo que entiendo es que cuando una dirección de un remitente está mal, el módulo termina con un mensaje de error, no que el servidor de correo paralice la operación.

Pues sí que podrías probar con esa opción. Sólo tienes que adjuntarla al resto de opciones de la llamada send():
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
MIME::Lite->send(
    'smtp',
    $smtp_server,
    Timeout  => 60,
    Debug    => 0,
    SkipBad  => 1
    AuthUser => $user,
    AuthPass => $pass,
);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Como también dice en ese apartado, puedes hacer uso de la función last_send_successful() para saber si el correo se pudo enviar o no.
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 Intermedio

¿Quién está conectado?

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