PDA

Visualizza la versione completa : [DELPHI] Visualizzare file con estensione .eml e .msg


Mco2983
22-02-2012, 10:32
Ciao a tutti!

Vorrei sapere se c'Ŕ un metodo da implementare per visualizzare email con estensione .eml e .msg, va bene qualsiasi soluzione: apertura in Outlook, viewer indipendente, componente da cui recuperare i dati tramite le sue proprietÓ...

Grazie per la collaborazione, buon lavoro! :ciauz:

Maurizio

alka
22-02-2012, 10:44
Se l'apertura in Outlook Ŕ sufficiente, ti basta invocare il file con la funzione API ShellExecute.

Fai una ricerca in questo forum, ne abbiamo parlato spesso e ci sono giÓ numerosi esempi di utilizzo.

Mco2983
22-02-2012, 12:14
Ho fatto un p˛ di ricerca nel forum, ho trovato numerosi esempi e discussioni ma solo in merito alla visualizzazione di un messaggio in costruzione, tramite il comando "mailto:".

Invece nulla a riguardo della visualizzazione di un messaggio, salvato in una cartella: in pratica, vorrei avere a disposizione la stessa funzione di come quando si fa doppio click in esplora risorse sul file .eml (viene aperto in lettura il messaggio).

Ho provato con
ShellExecute(Handle, 'open', PChar(NomeDoc), nil, nil, SW_SHOWNORMAL);
// NomeDoc Ŕ la variabile con il percorso completo della mail
ma non esegue nulla, da TaskManager noto che il processo "msimn" (Outlook) non parte

Sono quindi passato a realizzare una procedura con cui estrapolare le informazioni dalle proprietÓ del componente Indy TIdMessage.
Con questo metodo recupero mittente, destinatario, mail cc, oggetto, il testo in un webbrowser ma ho problemi con gli allegati perchŔ li individuo tra le messageparts, li visualizzo in una stringlist ma non posso aprirli perchŔ...fisicamente non so dove stanno!

Grazie,
Maurizio :ciauz:

Mco2983
22-02-2012, 15:05
Aggiornamento...ho risolto!!! :fighet: :D

Dunque, per visualizzare un file .eml in outlook, la funzione Ŕ la seguente:


PercOutLook:='C:\Programmi\Outlook Express\msimn.exe';
P:='/eml:' + PercEmail;
ShellExecute(Handle, 'open', PChar(PercOutLook), PChar(P), nil, SW_SHOWNORMAL);


PS: ho dovuto impostare i parametri in variabili perchŔ altrimenti caricando direttamente le stringhe non funzionava...

Bye bye,
Maurizio :ciauz:

Loading