Perl: Enviar correos con el módulo MIME::Lite

Hoy vamos a ver un ejemplo sencillo de programación en Perl, mediante el cual vamos a enviar un correo electrónico. Utilizamos el módulo MIME::Lite, que permite mandar contenido html (u otro MIME) en el cuerpo del mensaje.

El ejemplo que os voy a mostrar envía el correo utilizando el método de envío por defecto que tenga el sistema en el que se ejecuta (si es Linux, normalmente sendmail). Ahí va:

#!/usr/bin/perl -w
use MIME::Lite;
use strict;

my $subject = "Asunto del correo";
my $from = "test\@dominio.com";
my $to = "destinatario\@dominio.com";
my $body = "Esto es el cuerpo del correo ...";

my $msg = MIME::Lite->new
		(
			Subject => $subject,
			From    => $from,
			To      => $to,
			Type    => 'text/html',
			Data    => $body
		);	
$msg->send();

Básicamente declaramos las variables que contienen el asunto, destinatarios, cuerpo del mensaje, etc y abrimos la clase para trabajar con ella, finalmente enviamos el correo.

En la propia página de cpan hay bastantes ejemplos y muy útiles, os dejo un par de ellos, podéis ver los demás aquí.

Agregar una imagen a un mensaje con varios destinatarios:

### Start with a simple text message:
$msg = MIME::Lite->new(
From =>'me@myhost.com',
To =>'you@yourhost.com',
Cc =>'some@other.com, some@more.com',
Subject =>'A message with 2 parts...',
Type =>'TEXT',
Data =>"Here's the GIF file you wanted"
);

### Attach a part... the make the message a multipart automatically:
$msg->attach(
Type =>'image/gif',
Path =>'aaa000123.gif',
Filename =>'logo.gif'
);

Utilizar otro método de envío de correo si no tenemos sendmail:

### Do something like this in your 'main':
if ($I_DONT_HAVE_SENDMAIL) {
MIME::Lite->send('smtp', $host, Timeout=>60
AuthUser=>$user, AuthPass=>$pass);
}

### Now this will do the right thing:
$msg->send; ### will now use Net::SMTP as shown above