#!/usr/bin/perl use strict; use Net::POP3; use Mail::Sender; use MIME::Parser; use MIME::Entity; use MIME::Body; # Nos conectamos al servidor my $servidor = "sistemasorp.es"; my $pop3 = Net::POP3->new($servidor); die "No puedo conectar al servidor" unless $pop3; # Nos validamos my $usuario = "qrdecode+sistemasorp.es"; my $password = "xxxx"; my $numMensajes = $pop3->login($usuario, $password); # Recuperamos la lista de mensajes my $msjID; my $msjContenido; my $mensajes = $pop3->list(); foreach $msjID (keys(%$mensajes)) { $msjContenido = $pop3->get($msjID); # Por cada mensaje buscamos si tiene imagenes actuaMensaje(@$msjContenido); $pop3->delete($msjID); } $pop3->quit(); sub actuaMensaje { my $parser = new MIME::Parser; my (@lineas) = @_; my $linea; my ($cuerpo,@cuerpo,$indice,$subentidad); # Guardamos el contenido del mensaje en un fichero temporal open my $FICHERO,">/tmp/qrdecode.tmp" or die "No puedo crear el fichero\n"; foreach $linea (@lineas) { print $FICHERO $linea; } close $FICHERO; # Interpretamos el mensaje y guardamos el contenido en un directorio y las cabeceras en variables $parser->ignore_errors(1); $parser->output_under("/home/qrdecode/ficheros"); my $entidad = $parser->parse_open("/tmp/qrdecode.tmp"); my $cabecera = $entidad->head; my $asunto = $cabecera->get('Subject'); my $a = $cabecera->get('To'); my $de = $cabecera->get('From'); my $mensaje = "Hola, estos son los resultados de las imagenes enviadas:\n"; # Si tiene varios trozos es posible que tenga imagenes if ($entidad->parts > 0) { for ($indice=0; $indice<$entidad->parts; $indice++) { $subentidad = $entidad->parts($indice); # Si uno de los trozos es una imagen if (($subentidad->mime_type =~ m/image/i)) { # Vamos generando una cadena con el nombre del fichero de imagen y el texto que contiene $mensaje .= "\n__ " . $subentidad->head->mime_attr('content-disposition.filename') . " __\n"; my $cuerpo = $subentidad->bodyhandle; # Ejecutamos la libreria QRCODE de java para que interprete la imagen open (DATA, "java -cp /usr/java/qrcode/lib/qrcode.jar:/usr/java/qrcode/binarios LectorQR " . $cuerpo->path . "|") or die "No se pudo ejecutar java: $!"; while() { chomp; $mensaje .= $_; } close(DATA); } } } $mensaje .= "\n____\n\nDecodificador de QRCODE por email - 0.1b - Oscar Rodriguez Parra - 2007"; chomp($asunto); chomp($a); chomp($de); # Enviamos un correo al remitente con el contenido de las imagenes my $sender=Mail::Sender->new; if ($sender->MailMsg({ smtp => $servidor, from => 'QRDECODE ', to => $de, subject => $asunto, msg => $mensaje, auth => 'LOGIN', authid => $usuario, authpwd => $password, }) < 0) { die "$Mail::Sender::Error\n"; } $sender->Close; }