Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Script que recupere archivos adjuntos del correo

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Experto
Mensaje Jue Sep 20, 2007 4:46 pm
mark
Perlero Nuevo
Perlero Nuevo
Registrado: 19 Sep 2007
Mensajes: 4
Script que recupere archivos adjuntos del correo Responder citando

Hola, soy nuevo en este foro,espero que me ayuden con un problema que tengo, cuento con un script que me captura el archivo adjunto del correo pero la verdad que cuando lo ejecuto me sale un error, no sé si me falta instalar algunas herramientas más para que funcione o algo así.

Les mando el código para que lo vean.

Perl:
#! /usr/bin/perl

use Email::MIME;
my $parsed = Email::MIME->new($message);         #Tome un mensaje de correo
#my $mail = Email::Simple->new($text);
my @received = $mail->header("Received");
my $old_body = $mail->body;                   #salvar el body original
$mail->body_set("Not Perl? You suck!");

print $mail->as_string;                       #convertirlo en string

my $parsed = Email::MIME->new($message);      #Se de cuenta si el mensaje es multipart (contiene adjuntos) y
#my @parts = $parsed->parts;                  #separe la parte de texto plano y la parte de adjuntos

for (@parts) {                                #Y en @parts tienes el conjunto de partes. Cada parte la puedes manipular para
  my $t = $_->content_type;                   #saber tipo, archivo a disponer (si es adjunto) y "cuerpo" como tal.
  my $f = $_->filename;
  my $b = $_->body;
}


Desde ya les agradezco su ayuda.
Mensaje Jue Sep 20, 2007 5:12 pm
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

Hola mark, bienvenido a los foros de Perl en Español.

Comentas que te sale un error ¿qué dice ese error?

Saludos
Mensaje Jue Sep 20, 2007 5:34 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4130
Ubicación: Valladolid, España
Responder citando

¿Dónde se inicializa $message?

¿Por qué le cambias el cuerpo del mensaje?

¿Lo parseas dos veces?

¿Dónde se inicializa @parts?
Mensaje Mie Dic 05, 2007 11:30 am
mark
Perlero Nuevo
Perlero Nuevo
Registrado: 19 Sep 2007
Mensajes: 4
Responder citando

Disculpen por la demora para contestar, como les dije no se mucho del lenguaje de Perl al igual que Email::MIME , por eso les puse el código para que me puedan corregir.

En cuanto al error me sale cuando quiero ejecutar el script.

Código:
Error:
          Unable to parse undefined message at ./procesar_correo_per line 3


y en esa línea se encuentra comando:
Perl:
use Email::MIME;
my $parsed = Email::MIME->new($message);


y no termina de ejecutarse.

He instalado esta librería:
Código:
libemail-mime-perl


Att:
Mark


Gracias por su ayuda.
Mensaje Mie Dic 05, 2007 12:28 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4130
Ubicación: Valladolid, España
Responder citando

El error dice que $message no ha sido definido en ninguna parte.

Es decir, le estás pidiendo a la librería que te descomponga el $message en las partes que lo componen... pero... $message está vació.

Antes, debes leer el $message. Puede ser un mensaje guardado en un fichero externo o puede quizás estar en un buzón... pero no lo lees...
Mensaje Mie Dic 05, 2007 3:15 pm
mark
Perlero Nuevo
Perlero Nuevo
Registrado: 19 Sep 2007
Mensajes: 4
Responder citando

Eso quiere decir que si por ejemplo, reemplazo la variable ($message)
por la ruta del archivo en este caso el email que está entrando me va a funcionar.

Efectivamente. Si ahora no me salió ningún error pasó como si nada, pero no sé salió ninguna información de donde fue guardado, o sea quiero saber si fue capturado o no el archivo adjunto y cuando lo capture lo mande a una ruta especifica para poder procesarlo, me pueden apoyar en esto.


Att: Mark


Gracias por su ayuda.
Mensaje Mie Dic 05, 2007 3:49 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4130
Ubicación: Valladolid, España
Responder citando

Email::MIME no admite como entrada la ruta del archivo.

P.D. Estamos en el foro Experto, así que las respuestas son "ad hoc".
Mensaje Mie Dic 05, 2007 4:04 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4130
Ubicación: Valladolid, España
Responder citando

Me ha dado por entrar en las MIME::Tools, y en la página de ejemplos viene hecho el programa que necesitas:

http://search.cpan.org/src/DONEILL/MIME-tools-5.425/examples/mimeexplode

Ultima edición por explorer el Mie Dic 05, 2007 4:44 pm, editado 1 vez
Mensaje Mie Dic 05, 2007 4:11 pm
mark
Perlero Nuevo
Perlero Nuevo
Registrado: 19 Sep 2007
Mensajes: 4
Responder citando

Gracias por tu ayuda explorer
Publicar nuevo tema   Responder al tema    Foros de discusión -> Experto Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group