Tempo fa mi è capito di dover leggere il contenuto di file .msg ottenuti salvando mail di Outlook. Il tutto è semplice se si utilizza il modello ad oggetti di Outlook, senza di questo il lavoro è un po' più complesso.
Cercando un po' sulla rete ho scoperto che i file .msg sono del formato "OLE Structured Storage File". E' un tipo particolare di file (binario), organizzabile gerarchicamente un po' come se fosse un mini file system. Windows fornisce API per fare I/O su file di questo genere.
Un file .msg è organizzato gerarchicamente in una serie di nodi, ciascuno dei quali è identificato da un particolare GUID e rappresenta un diverso elemento della mail (mittente, destinatari, attachments, ...).
Utilizzando una applicazione sviluppata da Eduardo Morcillo (http://www.mvps.org/emorcillo/en/index.shtml) e curiosando un po', si riesce a scoprire, ad es., che il nodo con GUID "__substg1.0_0E04001E" rappresenta l'elenco dei destinatari della mail, "__substg1.0_0E03001E" l'elenco dei destinatari in copia conoscenza e così via.