
OLM è un formato di file utilizzato da Microsoft Outlook per Mac per memorizzare dati locali. OLM contiene dati locali come email, allegati, note, dati di calendario, contatti, attività, cronologia, ecc. I file OLM sono utilizzati da Outlook per Mac. Outlook per Windows non può accedervi o aprirlo. La versione di Outlook per Windows supporta solo il formato di file PST per memorizzare i dati. In questo articolo considereremo come aprire e leggere file in formato OLM da applicazioni C#.
- API C# .NET per leggere file OLM
- Apertura di file in formato OLM
- Ottenere cartelle
- Elenco di email
- Estrazione di email
API C# .NET per leggere file OLM
Aspose.Email for .NET è un’API robusta che fornisce una gamma di funzionalità per implementare applicazioni di email. Inoltre, consente di leggere file OLM e altri formati di archiviazione delle email come MBOX, PST/OST. Puoi installare la libreria tramite NuGet o scaricare il suo DLL.
PM> Install-Package Aspose.Email
Apertura di file in formato OLM
L’API Aspose.Email introduce due modi per aprire file in formato OLM:
utilizzando il costruttore
utilizzando il metodo statico FromFile
Ci sono differenze nel comportamento tra questi metodi. Vedi la sezione qui sotto.
Apertura del file tramite costruttore
Per aprire un file, devi chiamare il costruttore della classe OlmStorage e passare il nome completo del file o lo stream come argomento:
var fileName = "MyStorage.olm"; | |
var olm = new OlmStorage(fileName); |
Apertura del file utilizzando il metodo statico FromFile
Per aprire un file, devi utilizzare il metodo statico FromFile e passare il nome completo del file o lo stream come argomento:
var fileName = "MyStorage.olm"; | |
var olm = OlmStorage.FromFile(fileName); |
Ottenere cartelle
Dopo aver aperto il file utilizzando il costruttore, sarà accessibile la proprietà FolderHierarchy. Essa restituisce un elenco di directory che esistono nel file OLM. Ogni oggetto della classe OlmFolder dell’elenco ha la proprietà SubFolders, che restituisce un elenco di sottocartelle. Così, abbiamo accesso a tutte le directory in OLM.
L’esempio seguente mostra l’elenco di tutte le cartelle in ordine gerarchico:
using (var olm = new OlmStorage(fileName)) | |
{ | |
PrintAllFolders(olm.FolderHierarchy, string.Empty); | |
} | |
private void PrintAllFolders(List<OlmFolder> folderHierarchy, string indent) | |
{ | |
foreach (var folder in folderHierarchy) | |
{ | |
Console.WriteLine($"{indent}{folder.Name}"); | |
PrintAllFolders(folder.SubFolders, indent+"-"); | |
} | |
} |
Se apri il file utilizzando il metodo FromFile, per impostazione predefinita la proprietà FolderHierarchy non sarà inizializzata e restituirà null
. In questo caso, è necessario chiamare esplicitamente il metodo GetFolders:
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
var folders = olm.GetFolders(); | |
} |
Inoltre, è possibile ottenere qualsiasi cartella per nome. Per farlo, devi:
chiamare il metodo GetFolder
passare il nome della cartella come primo argomento e un valore che indica se ignorare la distinzione tra maiuscole e minuscole durante la ricerca di una cartella, come secondo parametro.
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
// get inbox folder by name | |
OlmFolder folder = olm.GetFolder("Inbox", true); | |
} |
Elenco di email
La classe OlmFolder, che rappresenta una cartella, ha i seguenti metodi per ottenere l’elenco delle email:
EnumerateMessages implementa l’iterazione delle email in una cartella. In questo caso, ogni iterazione restituisce un oggetto OlmMessageInfo, che fornisce informazioni brevi sulle email.
EnumerateMapiMessages, implementa anch’essa l’iterazione delle email in una cartella, ma in questo caso, ogni iterazione restituisce un oggetto MapiMessage, che rappresenta l’email stessa, con tutte le proprietà.
Utilizzando il metodo EnumerateMessages
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
var folder = olm.GetFolder("Inbox", true); | |
foreach (var messageInfo in folder.EnumerateMessages()) | |
{ | |
Console.WriteLine(messageInfo.Subject); | |
} | |
} |
Utilizzando il metodo EnumerateMapiMessages
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
var folder = olm.GetFolder("Inbox", true); | |
foreach (var msg in folder.EnumerateMapiMessages()) | |
{ | |
// save message in MSG format | |
msg.Save($"{msg.Subject}.msg"); | |
} | |
} |
Altre proprietà utili
Inoltre, la classe OlmFolder ha le proprietà HasMessages e MessageCount, che restituiscono la presenza di messaggi nella cartella e il loro conteggio:
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
var folder = olm.GetFolder("Inbox", true); | |
if (folder.HasMessages) | |
{ | |
Console.WriteLine($"Message count: {folder.MessageCount}"); | |
} | |
} |
Estrazione di email
La classe OlmStorage ha il metodo ExtractMapiMessage, che consente di estrarre email. Questo metodo riceve un oggetto OlmMessageInfo.
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
var folder = olm.GetFolder("Inbox", true); | |
foreach (var messageInfo in folder.EnumerateMessages()) | |
{ | |
if (messageInfo.Date == DateTime.Today) | |
{ | |
// Extracts today's messages form Inbox | |
var msg = olm.ExtractMapiMessage(messageInfo); | |
} | |
} | |
} |
Conclusione
In questo articolo, hai imparato come leggere file OLM in C#. Hai visto i modi per ottenere l’elenco delle cartelle ed estrarre messaggi dal file OLM. Inoltre, puoi saperne di più su Aspose.Email per .NET consultando la documentazione. Inoltre, puoi condividere le tue domande o richieste nel nostro forum.