• Publicidad

Error al leer un archivo .msg

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Error al leer un archivo .msg

Notapor yulius160 » 2020-04-28 14:42 @654

Buenas tardes.

Estoy intentando leer un archivo .msg que me compartió mi jefe para su posterior migración y que tenga la codificación bien y demás.

Al intentar leer los archivos hay unos cuantos que me generan el siguiente error:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Multiple properties not implemented at C:/Perl64/site/lib/Mail/Exchange/PropertyContainer.pm line 192.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

mientras que el resto sí me los procesa de manera correcta.

Comparto el código con el que los estoy leyendo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Mail::Exchange::Message;
  2. use Mail::Exchange::Message::MessageFlags;
  3. use Mail::Exchange::Recipient;
  4. use Mail::Exchange::Attachment;
  5. use Mail::Exchange::PidTagIDs;
  6.  
  7. open(archivo,"C:\\Users\\contrdgt1\\Desktop\\corregir mail\\entrada.csv");
  8.  
  9. my @rows=<archivo>;
  10.  
  11. close(archivo);
  12.  
  13. foreach $row (@rows){
  14.        
  15.         chomp $row;
  16.         @matrix = split /;/, $row;
  17.        
  18.         my $rutaArchivo = $matrix[0];
  19.         my $rutaDestino = $matrix[1];
  20.         my $nombre = "";
  21.        
  22.         if($rutaArchivo =~ /.+\\.+\\(.+$)/){
  23.                 $nombre = $1;
  24.         }
  25.         elsif($rutaArchivo =~ /.+\/.+\/(.+$)/){
  26.                 $nombre = $1;
  27.         }
  28.        
  29.         # print $rutaArchivo."\n";
  30.        
  31.        
  32.         my $msg = Mail::Exchange::Message->new($rutaArchivo);
  33.         $msg->setUnicode(1);
  34.         $msg->setBody(PidTagBody);
  35.         $msg->setSubject($msg->get(PidTagSubject));
  36.        
  37.         unlink($rutaArchivo);
  38.        
  39.         $msg->save($rutaDestino.$nombre);
  40. }
  41.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


De ante mano les doy gracias porque ya llevo varios días y no encuentro el problema.
yulius160
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2020-04-28 14:04 @628

Publicidad

Re: Error al leer un archivo .msg

Notapor explorer » 2020-04-28 18:57 @831

Bienvenido a los foros de Perl en Español, yulius160.

El mensaje de error es justo lo que dice: el módulo no es capaz de manejar mensajes que tenga puesto el atributo de "Múltiples propiedades". Tú mismo lo puedes ver en el código del módulo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.                 if ($type & 0x1000) {
  2.                         die("Multiple properties not implemented");
  3.                 }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

En concreto, corresponde a todos los tipos de mensajes que tengan el bit 24 puesto en el atributo de tipo de dato, conforme a este documento:

https://interoperability.blob.core.wind ... OPS%5d.pdf

(busca por las líneas "Data type" que contengan la palabra "multiple". Por ejemplo, PtypMultipleTime, 0x1040).

Me temo que, si no encuentras un módulo Perl más moderno para leer archivos .msg, tendrás que tratar estos mensajes de forma manual.

Un ejemplo más de lo que pasa al usar tecnologías propietarias. Quizás tardes menos si le pides a Exchange que convierta los buzones de correo al formato estándar mbox.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Error al leer un archivo .msg

Notapor yulius160 » 2020-04-29 09:00 @416

Buenos días.

¿Qué módulo me aconsejas para leer los documentos de correo (msg) teniendo en cuenta que estos archivos msg los tengo en local y los correos de donde se exportaron ya fueron eliminados hace años por las personas que en ese tiempo administraban los servidores de correo?

Adicional, estuve intentando abrir estos correos y guardarlos nuevamente con formato de mensaje Unicode de Outlook y volverlos a leer con el código que mostré anteriormente y me genera el siguiente error:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
C:\Users\contrdgt1\Desktop\corregir mail\mail_copia\a.MSG does not seem to be an OLE File at C:/Perl64/site/lib/Mail/Exchange/Message.pm line 148.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

y me di cuenta de que en el hilo del correo de este archivo msg que estoy procesando en la imagen de la firma tiene lo siguiente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
<Objeto OLE: Picture (Device Independent Bitmap) >>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

y al final del correo contiene un texto parecido:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
<Mensaje:  REQUISITOS EXPORTACIÓN PLATINO >>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¿Habría alguna manera de quitar los caracteres o de arreglar este error?

Muchas gracias.
yulius160
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2020-04-28 14:04 @628

Re: Error al leer un archivo .msg

Notapor explorer » 2020-04-29 10:07 @463

Yo no puedo ayudarte. Nunca he manejado ese tipo de archivos. A ver si otra persona del foro lee esto y te puede ayudar.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado