Конвертація OLM у PST
Contents
[
Hide
]
OLM є форматом файлу бази даних, що використовується Microsoft Outlook для Mac. Файли OLM зберігають електронні листи, дані календаря, контакти та налаштування програми, і вони не підтримуються Outlook для Windows. Щоб перенести поштову скриньку з Outlook для Mac до Outlook для Windows, потрібно конвертувати файл OLM у Outlook PST формат. Aspose.Email для .NET дозволяє робити це в коді, без встановленого Microsoft Outlook.
Як працює конверсія
Щоб конвертувати файл OLM у PST, виконайте наступні кроки:
- Створіть екземпляр OlmStorage клас для відкриття вихідного файлу OLM.
- Створіть новий PST файл за допомогою PersonalStorage.Create метод.
- Реалізуйте
GetContainerClassметод, який зіставляє клас повідомлення з відповідним класом папки (контейнера), щоб кожна папка створювалася з правильним типом у PST. - Реалізуйте
AddToPstметод, який рекурсивно читає кожну папку та її повідомлення з файлу OLM — використовуючи EnumerateMapiMessages - і додає їх до PST у тому ж порядку, використовуючиAddSubFolderіAddMessageметодів FolderInfo.
Зразок коду
Наступний код показує, як конвертувати файл OLM у PST.
Метод Main:
// create an instance of OlmStorage class to open the source OLM
using (var olm = new OlmStorage("my.olm"))
// create a new PST file
using (var pst = PersonalStorage.Create("my.pst", FileFormatVersion.Unicode))
{
// recursively read each folder and its messages
// and add 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);
}
}
Конверсія у зворотному напрямку (з PST в OLM) не підтримується, оскільки файл OLM завжди створюється Outlook для Mac під час додавання облікового запису та синхронізації з поштовим сервером.