Página 1 de 1

Error al leer un archivo .msg

NotaPublicado: 2020-04-28 14:42 @654
por yulius160
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.003 segundos, usando GeSHi 1.0.8.4


De ante mano les doy gracias porque ya llevo varios días y no encuentro el problema.

Re: Error al leer un archivo .msg

NotaPublicado: 2020-04-28 18:57 @831
por explorer
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.

Re: Error al leer un archivo .msg

NotaPublicado: 2020-04-29 09:00 @416
por yulius160
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.

Re: Error al leer un archivo .msg

NotaPublicado: 2020-04-29 10:07 @463
por explorer
Yo no puedo ayudarte. Nunca he manejado ese tipo de archivos. A ver si otra persona del foro lee esto y te puede ayudar.