Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Abrir Ficheros .MSG (https://www.clubdelphi.com/foros/showthread.php?t=61212)

luigidean 30-10-2008 12:51:09

Abrir Ficheros .MSG
 
Hola a todos

He estado buscando pero no he encontrado nada, imagino que debe haber poca información al respecto, así que os expongo mi problema.

Desde Microsoft Outlook exporto los correos a ficheros .MSG a una carpeta. Ahora bien quiero encontrar algún código o componente que me permita abrir esos ficheros desde mi programa tal como se verían en outlook o similar. A parte de poder extraer los ficheros adjuntos que pueda haber dentro de ese ficherito .msg

Utilizo Delphi 7...

No se si esto es posible por eso os pregunto.

Un saludo y gracias

luigidean 06-11-2008 14:04:52

nadie sabe?? :(

jhonny 06-11-2008 15:48:42

El componente TIdMessage tiene un metodo llamado LoadFromFile y una propiedad llamada MessageParts que es donde se guardan todas las partes del mensaje... a su vez dicha propiedad tiene otra llamada Items que es una lista de esas partes de donde puedes tomar la información que necesites y manipularla a tu antojo... un ejemplo muy, pero muy sencillo es el siguiente...

Suponiendo que tienes un Memo en el Form, hacemos lo siguiente:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
begin
  IdMessage1.LoadFromFile('C:\Prueba.msg');

  for I := 0 to IdMessage1.MessageParts.Count - 1 do
  begin
    if IdMessage1.MessageParts.Items[i].PartType = mptText then
      Memo1.Lines := TIdText(IdMessage1.MessageParts.Items[i]).Body
    else
      ShowMessage(TIdAttachment(IdMessage1.MessageParts.Items[i]).FileName);
  end;
end;

Ese ejemplo solo se limita a mostrar, el mensaje formateado en HTML en el Memo1 y a mostrar un mensaje con el nombre de los archivos adjuntos, pero en la propiedad Item de tipo TIdMessagePart que he mencionado anteriormente tienes mucha mas información...

Nota: Por lo que he notado, Items[1] tiene el texto plano e Items[2] tiene el texto con todas sus etiquetas HTML, que luego podran ser cargadas, tal vez en algun TWebBrowser, el resto si son los adjuntos... de todas formas, para ello esta el metodo PartType que es quien nos indica de cual de los dos estamos hablando exactamente ;).

Espero te sirva este ejemplo, por lo menos de Guia o Norte :).

luigidean 06-11-2008 17:41:39

Muchas gracias por tu respuesta jhonny.

Investigando he visto un ejemplo bastante completito tanto para enviar como recibir correo.

El formulario consta de un Memo donde muestra el mensaje pero aparecen las etiquetas html y lo suyo seria que apareciera el correo ya formateado.

Seguí investigando y descubri que guardandolo en un fichero .html temporal en el disco duro luego podria cargar este fichero en un WebBrowser mostrandose el mensaje bien formateado pero esta vez no aparecen las imagenes.

En este punto es donde me he quedado estancado ahora mismo intentando que me aparezca todo como si estuvieramos en el outlook por ejemplo...

Si tienes alguna idea de como mostrar las imagenes te lo agradeceria

Un saludo ;)

dec 06-11-2008 18:09:42

Hola,

No sé cómo lo hará Outlook, seguramente, con una solución mejor que la que a mí se me ocurre a bote pronto, que igual ni es solución ni es nada: tratar de descargar las imágenes que se encuentren en el cuerpo del correo (¿o como archivos adjuntos?) y mostrarlas ya a partir de una ruta conocida, porque, dichas imágenes podrían ya estar en algún directorio temporal del disco duro.

Vale. Yo le encuentro sentido, aunque, acto seguido, se me ocurre lo siguiente: ¿qué pasa si esas imágenes contienen información privada? Y pueden contenerla, puesto qeu vienen junto a un correo, privado. Quiero decir, guardar por nuestra cuenta esas imágenes en el disco duro, significa que luego habría que borrarlas, asegurarnos de que se borran, lo que se me torna en algo que puede llevar a ser problemático.

En fin. A ver si algún compañero con más experiencia y conocimientos puede dar alguna idea mejor. ;)

luigidean 06-11-2008 18:45:12

Gracias dec.

Esa posibilidad de descargar las imagenes en el disco duro tambien la he probado pero dentro del html que tambien guardo en el disco pone este codigo:

Código:

<img border=0 width=550 height=187 id="_x0000_i1025"
  src="cid:image001.jpg@01C93FED.752492E0">

Si os fijais en el src antes del nombre del fichero de imagen pone "cid", y posteriormente "@01C93FED.752492E0", no se que quieren decir pero quizas por eso no me aparezca la imagen


La franja horaria es GMT +2. Ahora son las 04:29:28.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi