OLM je formát souboru, který Microsoft Outlook pro Mac používá k ukládání místních dat. OLM obsahuje místní data, jako jsou e-maily, přílohy, poznámky, data kalendáře, kontakty, úkoly, historie atd. Soubory OLM používá Outlook pro Mac. Outlook pro Windows nemůže získat přístup nebo jej otevřít. Verze Outlooku pro Windows podporuje k ukládání dat pouze formát souboru PST. V tomto článku se podíváme na to, jak otevřít a číst soubory formátu OLM z aplikací C#.
- C# .NET API pro čtení souborů OLM
- Otevírání souborů ve formátu OLM
- Získávání složek
- Seznam e-mailů
- Extrahování e-mailů
C# .NET API pro čtení souborů OLM
Aspose.Email for .NET je robustní API, které poskytuje řadu funkcí pro implementaci e-mailových aplikací. Umožňuje také čtení souborů OLM a dalších formátů ukládání pošty, jako je MBOX, PST/OST. Knihovnu můžete nainstalovat buď pomocí NuGet nebo stáhnout její DLL.
PM> Install-Package Aspose.Email
Otevírání souborů ve formátu OLM
Aspose.Email API představuje dva způsoby otevírání souborů formátu OLM:
pomocí konstruktor
pomocí statické metody FromFile
Mezi těmito metodami jsou rozdíly v chování. Viz část níže.
Otevření souboru konstruktorem
Chcete-li otevřít soubor, měli byste zavolat constructor třídy OlmStorage a předat mu celý název souboru nebo stream jako argument:
var fileName = "MyStorage.olm";
var olm = new OlmStorage(fileName);
Otevření souboru pomocí statické metody FromFile
Chcete-li otevřít soubor, měli byste použít statickou metodu FromFile a předat mu celý název souboru nebo stream jako argument:
var fileName = "MyStorage.olm";
var olm = OlmStorage.FromFile(fileName);
Získávání složek
Po otevření souboru pomocí konstruktoru bude přístupná vlastnost FolderHierarchy. Vrátí seznam adresářů, které existují v souboru OLM. Každý objekt třídy OlmFolder seznamu má vlastnost SubFolders, která vrací seznam podsložek. Máme tedy přístup ke všem adresářům v OLM.
Níže uvedený příklad zobrazuje seznam všech složek v hierarchickém pořadí:
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+"-");
}
}
Pokud soubor otevřete pomocí metody FromFile, ve výchozím nastavení nebude vlastnost FolderHierarchy inicializována a vrátí null
. V tomto případě je nutné explicitně zavolat metodu GetFolders:
using (var olm = OlmStorage.FromFile(fileName))
{
var folders = olm.GetFolders();
}
Také je možné získat jakoukoli složku podle názvu. Chcete-li to provést, měli byste:
zavolejte metodu GetFolder
předat název složky jako první argument a hodnotu, která ukazuje, zda se má při hledání složky ignorovat rozlišování malých a velkých písmen, jako druhý parametr.
using (var olm = OlmStorage.FromFile(fileName))
{
// získat složku doručené pošty podle názvu
OlmFolder folder = olm.GetFolder("Inbox", true);
}
Seznam e-mailů
Třída OlmFolder, která představuje složku, má následující způsoby, jak získat seznam e-mailů:
EnumerateMessages implements iteration of emails in a folder. In this case, every iteration returns OlmMessageInfo object, which provides short info about email.
EnumerateMapiMessages, also implements iteration of emails in a folder, but in this case, every iteration returns MapiMessage object, which represents the email itself, with all properties.
Použití metody EnumerateMessages
using (var olm = OlmStorage.FromFile(fileName))
{
var folder = olm.GetFolder("Inbox", true);
foreach (var messageInfo in folder.EnumerateMessages())
{
Console.WriteLine(messageInfo.Subject);
}
}
Pomocí metody EnumerateMapiMessages
using (var olm = OlmStorage.FromFile(fileName))
{
var folder = olm.GetFolder("Inbox", true);
foreach (var msg in folder.EnumerateMapiMessages())
{
// uložit zprávu ve formátu MSG
msg.Save($"{msg.Subject}.msg");
}
}
Další užitečné vlastnosti
Třída OlmFolder má také vlastnosti HasMessages a MessageCount, které vrací přítomnost zpráv ve složce a jejich počet:
using (var olm = OlmStorage.FromFile(fileName))
{
var folder = olm.GetFolder("Inbox", true);
if (folder.HasMessages)
{
Console.WriteLine($"Message count: {folder.MessageCount}");
}
}
Extrahování e-mailů
Třída OlmStorage má metodu ExtractMapiMessage, která umožňuje extrahovat emal. Tato metoda přijímá objekt OlmMessageInfo.
using (var olm = OlmStorage.FromFile(fileName))
{
var folder = olm.GetFolder("Inbox", true);
foreach (var messageInfo in folder.EnumerateMessages())
{
if (messageInfo.Date == DateTime.Today)
{
// Extrahuje dnešní zprávy z doručené pošty
var msg = olm.ExtractMapiMessage(messageInfo);
}
}
}
Závěr
V tomto článku jste se naučili číst soubory OLM v C#. Viděli jste způsoby, jak získat seznam složek a extrahovat zprávy ze souboru OLM. Kromě toho se můžete dozvědět více o Aspose.Email pro .NET pomocí documentation. Také můžete sdílet své dotazy nebo požadavky na našem fóru.