OLM to PST

Microsoft Outlook доступен для операционных систем Windows и Mac. Outlook для Mac и Outlook для Windows хранят пользовательские электронные письма в файлах данных. Эти файлы данных состоят из всех электронных писем, контактов, задач, заметок и элементов календаря. Outlook для Mac хранит элементы почтового ящика в файле OLM, который не поддерживается Outlook для Windows. Таким образом, невозможно открыть файл Outlook для Mac (OLM) в Outlook для Windows. Если вы хотите мигрировать свой почтовый ящик из Outlook для Mac в Outlook для Windows, вы должны конвертировать файл OLM Outlook для Mac в формат файла PST Outlook. В этой статье рассматривается как программно конвертировать файл OLM в файл PST на C#.

В этой статье будут рассмотрены следующие темы:

C# API для конвертации OLM в PST

Чтобы конвертировать OLM в PST, мы будем использовать Aspose.Email для .NET. Это API для обработки электронных писем, который позволяет вам манипулировать электронными письмами и работать с форматами файлов популярных почтовых клиентов, таких как Thunderbird, Outlook и т. д. Вы можете скачать DLL API или установить его из NuGet, используя следующую команду.

PM> Install-Package Aspose.Email

Шаги для конвертации OLM в PST

Мы можем конвертировать файл OLM в PST, следуя следующим шагам:

  • Создать новый файл PST и открыть его для записи
  • Открыть исходный файл OLM
  • Прочитать каждый элемент почтового ящика из OLM и записать его в PST

Следующий раздел описывает, как преобразовать эти шаги в C# и конвертировать файлы из OLM в PST.

Конвертация OLM в PST программно с использованием C#

Мы можем конвертировать OLM в PST программно на C#, следуя следующим шагам:

  • Во-первых, создайте экземпляр класса OlmStorage, чтобы открыть исходный OLM.
  • Затем создайте новый файл PST, используя метод Create.
  • Кроме того, мы создадим функцию GetContainerClass, которая сопоставляет класс сообщения с классом папки, чтобы мы могли создавать папки PST с классом контейнера, соответствующим классу сообщения, который они содержат.
  • Наконец, создайте функцию AddToPst, которая рекурсивно читает каждую папку и её сообщения из OLM, используя метод EnumerateMapiMessages, и добавляет их в PST в том же порядке, используя методы AddSubFolder и AddMessage.

Следующий пример кода показывает, как конвертировать OLM в PST на C#.

Основной метод:

// 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 для .NET без ограничений на оценку, используя бесплатную временную лицензию.

Заключение

В этой статье вы узнали, как конвертировать OLM в PST на C# .NET. Также вы увидели, как читать сообщения из хранилища OLM и записывать элементы в хранилище PST программно. Кроме того, вы можете посетить документацию, чтобы изучить другие функции Aspose.Email для .NET. Если у вас есть какие-либо вопросы, вы можете обратиться на наш форум.

См. также