OLM до 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 у формат файлу Outlook PST. У цій статті розповідається про те, як програмно конвертувати файл OLM у файл PST на C#.

У цій статті будуть розглянуті такі теми:

C# API для перетворення OLM у PST

Щоб конвертувати OLM у PST, ми використаємо Aspose.Email for .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#.

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

// створити екземпляр класу OlmStorage для OLM з відкритим кодом
using (var olm = new OlmStorage("my.olm"))
// створити новий файл PST
using (var pst = PersonalStorage.Create("my.pst", FileFormatVersion.Unicode))
{
    // рекурсивно читає кожну папку та її повідомлення 
    // і додає їх до PST у тому ж порядку
    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 без оціночних обмежень за допомогою безкоштовної тимчасової ліцензії.

Висновок

У цій статті ви дізналися, як конвертувати OLM у PST у C# .NET. Крім того, ви бачили, як програмно читати повідомлення зі сховища OLM і записувати елементи в сховище PST. Крім того, ви можете відвідати документацію, щоб дослідити інші функції Aspose.Email for .NET. Якщо у вас виникнуть запитання, ви можете опублікувати їх на нашому форумі.

Дивись також