OLM to PST

Microsoft Outlook 可用於 Windows 和 Mac 操作系統。 Outlook for Mac 和 Outlook for Windows,將用戶電子郵件存儲在數據文件中。這些數據文件包含所有電子郵件、聯繫人、任務、備忘錄和日曆項目。 Outlook for Mac 將郵箱項目保存在 OLM 文件中,而這在 Outlook for Windows 中不受支持。因此,無法在 Outlook for Windows 中打開 Outlook for Mac (OLM) 文件。如果您想將郵箱從 Outlook for Mac 遷移到 Outlook for Windows,您必須將 Outlook for Mac 的 OLM 文件轉換為 Outlook PST 文件格式。 本文涵蓋了如何以程式方式在 C# 中將 OLM 文件轉換為 PST 文件

以下主題將在本文中涵蓋:

C# API 將 OLM 轉換為 PST

要將 OLM 轉換為 PST,我們將使用 Aspose.Email for .NET。這是一個電子郵件處理 API,允許您操作電子郵件並處理流行電子郵件客戶端(如 Thunderbird、Outlook 等)的文件格式。您可以使用以下命令 下載 API 的 DLL 或從 NuGet 安裝它。

PM> Install-Package Aspose.Email

將 OLM 轉換為 PST 的步驟

我們可以通過以下步驟將 OLM 文件轉換為 PST:

  • 創建一個新的 PST 文件並打開它以進行寫入
  • 打開源 OLM 文件
  • 從 OLM 中讀取每個郵箱項目並將其寫入 PST

以下部分將描述如何將這些步驟轉換為 C# 並將文件從 OLM 轉換為 PST。

以 C# 程式方式將 OLM 轉換為 PST

我們可以通過以下步驟以程式方式在 C# 中將 OLM 轉換為 PST:

  • 首先,創建 OlmStorage 類的實例以打開源 OLM。
  • 接下來,使用 Create 方法創建一個新的 PST 文件。
  • 此外,我們將創建一個 GetContainerClass 函數,該函數將消息類映射到文件夾類,以便我們可以創建與其包含的消息類相對應的容器類 PST 文件夾。
  • 最後,創建一個 AddToPst 函數,該函數使用 EnumerateMapiMessages 方法遞歸讀取 OLM 中的每個文件夾及其消息,並使用 AddSubFolderAddMessage 方法以相同的順序將它們添加到 PST 中。

以下代碼示例顯示了如何在 C# 中將 OLM 轉換為 PST。

主方法:

// create an instance of OlmStorage class to open source OLM
using (var olm = new OlmStorage("my.olm"))
// create a new PST file
using (var pst = PersonalStorage.Create("my.pst", FileFormatVersion.Unicode))
{
// recursively reads each folder and its messages
// and adds them to the PST in the same order
foreach (var olmFolder in olm.FolderHierarchy)
{
AddToPst(pst.RootFolder, olmFolder);
}
}

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";
}

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);
}
}

獲取免費 API 許可證

您可以使用 Aspose.Email for .NET 而不受評估限制,使用 免費臨時許可證

結論

在這篇文章中,您已經學會了如何在 C# .NET 中將 OLM 轉換為 PST。此外,您還看到如何從 OLM 存儲中讀取消息並以程式方式將項目寫入 PST 存儲。除此之外,您可以訪問 文檔 探索 Aspose.Email for .NET 的其他功能。如果您有任何問題,可以發帖到 我們的論壇

參見