Конвертиране на 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, когато се добави акаунт и се синхронизира със сървъра за поща.