• Publicidad

Script que recupere archivos adjuntos del correo

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Script que recupere archivos adjuntos del correo

Notapor mark » 2007-09-20 17:46 @782

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.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#! /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;
}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Desde ya les agradezco su ayuda.
mark
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2007-09-19 16:08 @714

Publicidad

Notapor kidd » 2007-09-20 18:12 @800

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

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

Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor explorer » 2007-09-20 18:34 @815

¿Dónde se inicializa $message?

¿Por qué le cambias el cuerpo del mensaje?

¿Lo parseas dos veces?

¿Dónde se inicializa @parts?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor mark » 2007-12-05 12:30 @562

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: Seleccionar todo
Error:
          Unable to parse undefined message at ./procesar_correo_per line 3


y en esa línea se encuentra comando:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use Email::MIME;
my $parsed = Email::MIME->new($message);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


y no termina de ejecutarse.

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


Att:
Mark


Gracias por su ayuda.
mark
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2007-09-19 16:08 @714

Notapor explorer » 2007-12-05 13:28 @603

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...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor mark » 2007-12-05 16:15 @719

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.
mark
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2007-09-19 16:08 @714

Notapor explorer » 2007-12-05 16:49 @742

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

P.D. Estamos en el foro Experto, así que las respuestas son "ad hoc".
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor explorer » 2007-12-05 17:04 @753

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 ... imeexplode
Última edición por explorer el 2007-12-05 17:44 @781, editado 1 vez en total
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor mark » 2007-12-05 17:11 @758

Gracias por tu ayuda explorer
mark
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2007-09-19 16:08 @714


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron