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 函数,递归地从 OLM 中读取每个文件夹及其消息,使用 EnumerateMapiMessages 方法,并使用 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 的其他功能。如果您有任何问题,可以在 我们的论坛 上发帖。

另见