Microsoft Outlook je k dispozici pro operační systémy Windows a Mac. Outlook pro Mac a Outlook pro Windows, ukládejte uživatelské e-maily do datových souborů. Tyto datové soubory obsahují všechny e-maily, kontakty, úkoly, poznámky a položky kalendáře. Outlook pro Mac uchovává položky poštovní schránky v souboru OLM, který Outlook pro Windows nepodporuje. Proto není možné otevřít soubor aplikace Outlook pro Mac (OLM) v aplikaci Outlook pro Windows. Pokud chcete migrovat poštovní schránku z Outlooku pro Mac do Outlooku pro Windows, musíte převést soubor OLM Outlooku pro Mac na formát souboru PST aplikace Outlook. Tento článek popisuje, jak převést soubor OLM na soubor PST programově v C#.
V tomto článku se budeme zabývat následujícími tématy:
C# API pro převod OLM na PST
K převodu OLM na PST použijeme Aspose.Email for .NET. Jedná se o rozhraní API pro zpracování e-mailů, které vám umožňuje manipulovat s e-maily a pracovat s formáty souborů oblíbených e-mailových klientů, jako je Thunderbird, Outlook atd. Knihovnu DLL API si můžete stáhnout nebo ji nainstalovat z NuGet pomocí následující příkaz.
PM> Install-Package Aspose.Email
Kroky k převodu OLM na PST
Soubor OLM můžeme převést na PST podle následujících kroků:
- Vytvořte nový soubor PST a otevřete jej pro zápis
- Otevřete zdrojový soubor OLM
- Přečtěte si každou položku poštovní schránky z OLM a zapište ji do PST
Následující část popisuje, jak převést tyto kroky do jazyka C# a převést soubory z OLM na PST.
Převeďte OLM na PST programově pomocí C#
Můžeme převést OLM na PST programově v C# podle následujících kroků:
- Nejprve vytvořte instanci třídy OlmStorage pro open source OLM.
- Dále vytvořte nový soubor PST pomocí metody Create.
- Kromě toho vytvoříme funkci
GetContainerClass
, která namapuje třídu zprávy na třídu složky, takže můžeme vytvořit složky PST s třídou kontejneru, která odpovídá třídě zprávy, kterou obsahují. - Nakonec vytvořte funkci
AddToPst
, která rekurzivně čte každou složku a její zprávy z OLM pomocí metody EnumerateMapiMessages a přidává je do PST ve stejném pořadí pomocí AddSubFolder a AddMessage metody.
Následující ukázka kódu ukazuje, jak převést OLM na PST v C#.
Hlavní metoda:
// vytvořte instanci třídy OlmStorage pro open source OLM
using (var olm = new OlmStorage("my.olm"))
// vytvořte nový soubor PST
using (var pst = PersonalStorage.Create("my.pst", FileFormatVersion.Unicode))
{
// rekurzivně čte každou složku a její zprávy
// a přidá je do PST ve stejném pořadí
foreach (var olmFolder in olm.FolderHierarchy)
{
AddToPst(pst.RootFolder, olmFolder);
}
}
Funkce GetContainerClass:
public string GetContainerClass(string messageClass)
{
if (messageClass.StartsWith("IPM.Contact") || messageClass.StartsWith("IPM.DistList"))
{
return "IPF.Contact";
}
if (messageClass.StartsWith("IPM.StickyNote"))
{
return "IPF.StickyNote";
}
if (messageClass.StartsWith("IPM.Activity"))
{
return "IPF.Journal";
}
if (messageClass.StartsWith("IPM.Task"))
{
return "IPF.Task";
}
if (messageClass.StartsWith("IPM.Appointment") || messageClass.StartsWith("IPM.Schedule.meeting"))
{
return "IPF.Appointment";
}
return "IPF.Note";
}
Funkce AddToPst:
public void AddToPst(FolderInfo pstFolder, OlmFolder olmFolder)
{
FolderInfo pstSubFolder = pstFolder.GetSubFolder(olmFolder.Name);
foreach (var msg in olmFolder.EnumerateMapiMessages())
{
if (pstSubFolder == null)
{
pstSubFolder = pstFolder.AddSubFolder(olmFolder.Name, GetContainerClass(msg.MessageClass));
}
pstSubFolder.AddMessage(msg);
}
if (pstSubFolder == null)
{
pstSubFolder = pstFolder.AddSubFolder(olmFolder.Name);
}
foreach (var olmSubFolder in olmFolder.SubFolders)
{
AddToPst(pstSubFolder, olmSubFolder);
}
}
Získejte bezplatnou licenci API
Můžete používat Aspose.Email pro .NET bez omezení hodnocení pomocí bezplatné dočasné licence.
Závěr
V tomto článku jste se naučili, jak převést OLM na PST v C# .NET. Také jste viděli, jak číst zprávy z úložiště OLM a zapisovat položky do úložiště PST programově. Kromě toho můžete navštívit dokumentaci a prozkoumat další funkce Aspose.Email for .NET. V případě jakýchkoli dotazů můžete posílat příspěvky na naše fórum.