המרת OLM ל‑PST
Contents
[
Hide
]
OLM הוא פורמט קובץ מסד נתונים המשמש את Microsoft Outlook for Mac. קבצי OLM מאחסנים הודעות דואר, נתוני לוח שנה, אנשי קשר והגדרות יישום, ואינם נתמכים על‑ידי Outlook for Windows. כדי להעביר תיבת דואר מ‑Outlook for Mac ל‑Outlook for Windows, יש להמיר את קובץ ה‑OLM ל‑Outlook PST פורמט. Aspose.Email for .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 for Mac כאשר מוסיפים חשבון ומסנכרנים אותו עם שרת הדואר.