Ésta es una de las entradas que tenía en mi antiguo blog, y es de las más útiles para mi, ya que en varias ocasiones he podido consultarla y compartirla con amigos desarrolladores.
Bien, vamos a usar una biblioteca llamada Net::SMTP::SSL para enviar correos, podemos hacer uso de CPAN para instalarla o dependiendo de nuestra distro podemos encontrarla en los paquetes de su repositorio:
por ejemplo en Debian/Ubuntu podemos encontrarla así:
$ sudo apt-get install libnet-smtp-ssl-perl
En Archlinux/Manjaro así:
$ sudo pacman -S perl-net-smtp-ssl
Con esto instalado podremos enviar correos con el siguiente script de perl:
#!/usr/bin/perl
use strict;
use Net::SMTP::SSL;`
send_mail('juanPerez@gmail.com','Prueba de envío de correo', 'probando el envío de correo ;D');
print "mensaje enviado";
sub send_mail {
my $username = 'tucorreo@gmail.com';
my $password = '123456';
my $dest = shift; #'destinatario@algomail.com'
my $asunto = shift;
my $body_mail = shift;
#creamos la conexión con el servidor SMTP
my $smtp = Net::SMTP::SSL->new(
'smtp.gmail.com',
Port => 465,
Debug => 0,
)
|| print 'Error connecting to server... please check your info';
#se realiza al autentificación
$smtp->auth( $username, $password )
or
print "Error authenticating username $username";
$smtp->mail($username);
$smtp->to($dest);
#Se envía el correo
$smtp->data();
$smtp->datasend("From: ". $username );
$smtp->datasend("\n");
$smtp->datasend("To: ". $dest );
$smtp->datasend("\n");
$smtp->datasend("Subject: ". $asunto. "");
$smtp->datasend("\n");
$smtp->datasend($body_mail ."");
$smtp->dataend();
$smtp->quit();
}
[Actualizado 19/06/2015] Envío de correos con datos HTML
#!/usr/bin/perl
use strict;
use Net::SMTP::SSL;
send_mail('juanPerez@gmail.com','Prueba de envío de correo', 'probando el envío de correo ;D');
print "mensaje enviado";
sub send_mail {
my $username = 'tucorreo@gmail.com';
my $password = '123456';
my $dest = shift; #'destinatario@algomail.com'
my $asunto = shift;
my $body_mail = shift;
#creamos la conexión con el servidor SMTP
my $smtp = Net::SMTP::SSL->new(
'smtp.gmail.com',
Port => 465,
Debug => 0,
) || print 'Error connecting to server... please check your info';
#se realiza al autentificación
$smtp->;auth( $username, $password )
or
print "Error authenticating username $username";
$smtp->mail($username);
$smtp->to($dest);
#Se envía el correo
$smtp->data();
$smtp->datasend("From: ". $username);
$smtp->datasend("\n");
$smtp->datasend("To: ". $dest);
$smtp->datasend("\n");
$smtp->datasend("Subject: ". $asunto);
$smtp->datasend("\n");
#Cabecera para especificar que el contenido será HTML
$smtp->datasend("MIME-Version: 1.0\
Content-Type: text/html; charset=UTF-8 \
");
$smtp->datasend("\n");
$smtp->datasend($body_mail ."");
$smtp->dataend();
$smtp->quit();
}