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
- Програмне перетворення 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. Якщо у вас виникнуть запитання, ви можете опублікувати їх на нашому форумі.