Enviando Correos con Perl y Net::SMTP::SSL

perl linux mail develop

Logo_De_Perl

É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();
}