Ahora vamos a ver un ejemplo de como mandar un correo con un archivo adjunto en perl usando el módulo MIME::Lite.
Supongamos que le queremos mandar a algún amigo los temas de la banda de rock en la que tocamos y no queremos ir mandando uno por uno a mano.
Lo único que deberían editar del script son las siguientes constantes:
- $DATA_DIR, siendo la ruta al directorio donde se encuentran los archivos mp3.
- $SERVIDOR_MAIL, siedo la IP o el FQDN del servidor de correo a utilizar.
- $CUENTA_ORIGEN, mi casilla de correo.
- $CUENTA_DESTINO, casilla de correo de mi amigo.
- $mensaje, mensaje que recibe el destinatario del correo.
#!/usr/bin/perl -w
use strict;
use MIME::Lite;
use Net::SMTP;
use Readonly;
## Segundos que espera entre envios.
Readonly my $DELAY => 75;
## Ruta donde se encuentran los archivos a procesar.
Readonly my $DATA_DIR => "./";
Readonly my $EMPTY_STR => q{};
## Constantes referidas al envio del mail.
Readonly my $SERVIDOR_MAIL => 'localhost';
Readonly my $CUENTA_ORIGEN => 'micuentadecorreo@midominio.com';
Readonly my $CUENTA_DESTINO => 'lacasillademiamigo@sudominio.com';
Readonly my $TIPO_MIME => 'TEXT';
## Inicializacion de variables.
my $asunto_correo = $EMPTY_STR;
my $mensaje = $EMPTY_STR;
my $msg = $EMPTY_STR;
## Cargar el contenido del directorio a procesar en el array.
opendir MYDIR, $DATA_DIR;
my @items_en_directorio = grep !/^\.\.?$/, readdir MYDIR;
closedir MYDIR;
foreach my $archivo_a_procesar ( @items_en_directorio ) {
if ( -d $archivo_a_procesar ) {
print " $archivo_a_procesar - Es un directorio, se ignora \n";
}
else {
if ( $archivo_a_procesar =~ /.mp3/ ) {
print "Mandando:".$archivo_a_procesar."---\n";
$asunto_correo = 'MailAttacher::'.$archivo_a_procesar;
$mensaje = "Tu amigo ".$CUENTA_ORIGEN." quiere enviarte el tema: $archivo_a_procesar . "
. "\nQue lo disfrutes!!\n";
## Crear el mensaje.
$msg = MIME::Lite->new(
From => $CUENTA_ORIGEN,
To => $CUENTA_DESTINO,
Subject => $asunto_correo,
Type => $TIPO_MIME,
Data => $mensaje
);
$msg->attach( Type => 'audio/mpeg',
Path => $archivo_a_procesar,
Filename => $archivo_a_procesar,
Encoding => 'base64'
);
MIME::Lite->send( 'smtp', $SERVIDOR_MAIL, Timeout=>60);
$msg->send;
print "Espero $DELAY segs, para mandar el proximo archivo \n";
sleep ($DELAY);
}
else {
print $archivo_a_procesar." - No se manda, no es un mp3---\n";
}
}
}
exit 0;
No hay comentarios.:
Publicar un comentario