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 לפורמט קובץ PST של Outlook. מאמר זה עוסק כיצד להמיר קובץ 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 עבור .NET ללא מגבלות הערכה באמצעות רישיון זמני בחינם.

סיכום

במאמר זה, למדת כיצד להמיר OLM ל-PST ב-C# .NET. כמו כן, ראית כיצד לקרוא הודעות מאחסון OLM ולכתוב פריטים לאחסון PST באופן פרוגרמטי. מלבד זאת, אתה יכול לבקר בתיעוד כדי לחקור תכונות אחרות של Aspose.Email for .NET. למקרה שיהיו לך שאלות כלשהן, אתה יכול לכתוב בהפורום שלנו.

ראה גם