Perl – Net::SMTP::TLS – Mandar correos via SMTP con TLS
Gracias a la necesidad de mandar notificaciónes de Nagios utilizando un servidor SMTP remoto busque la manera de crear un script que me permita tal tarea, y adivine quien me ayudo? PERL!
Gracias a Perl y el modulo Net::SMTP::TLS pude crear un script que me permitio mandar correos a un servidor SMTP remoto que requiera TLS y autentificación (Por ejemplo Gmail como en este caso).
Antes de darles algunos ejemplos del script para que lo adapten a sus necesidades les voy a mostrar como instalar el modulo Net::SMTP::TLS, lo primero es entrar al «cpan shell«:
# perl -MCPAN -e shell
cpan shell — CPAN exploration and modules installation (v1.9456) Luego instalamos el modulo: cpan[1]> install Net::SMTP::TLS Abrimos un editor de textos y nos guiamos de este script de ejemplo: ==================================================== #!/usr/bin/perl -w $mailer->datasend(«Subject: Este es el asunton»); ====================================================== En el ejemplo anterior se puede ver como se carga el modulo Net::SMTP::TLS, y declaran dos variables, las cuales seran igual al primer y el segundo argumento, luego el script se autentificará con los datos pre-establecidos y mandara el correo. Guardamos nuestro script, le damos permisos de ejecución «chmod +x script.pl», y lo utilizamos de la siguiente manera: ./script.pl [email protected] «Este es un mensaje enviado desde Perl» Y listo, luego les cuento como utilizar este script en las notificaciones de Nagios. Saludos!
Enter ‘h’ for help.
cpan
Empezará a descargar el modulo, automáticamente lo instalará y estaremos listos para usarlo.
use Net::SMTP::TLS;
$destinatario=$ARGV[1];
$mensaje=$ARGV[2];
my $smtp = new Net::SMTP::TLS(‘smtp.gmail.com’,
Hello => ‘smtp.gmail.com’,
Port => 587,
User => ‘[email protected]’,
Password=> ‘Contraseña18’);
$smtp->mail(‘[email protected]’);
$smtp->to(«$destinatario»);
$smtp->data;
$smtp->datasend(«To: $destinatarion»);
$smtp->datasend(«From: [email protected]’);
$smtp->datasend(«n»);
$mailer->datasend(«n»);
$mailer->datasend(«$mensajen»);
$mailer->dataend();
$mailer->quit;
me da errores! :S
Que error te da?