העברת נתוני דוא"ל מ-Outlook for Mac (OLM) לפורמטים נתמכים באופן רחב כגון MBOX (ל‑Thunderbird / תיבות דואר Unix) ו-PST (Outlook for Windows) היא משימה נפוצה בעת מעבר בין פלטפורמות. Microsoft Outlook for Mac משתמש בפורמט OLM (Outlook for Mac Data File) לאחסון הודעות דוא"ל, אנשי קשר, לוחות שנה ופריטים אחרים. עם זאת, העברת נתונים אלה לסביבות מבוססות Windows או ללקוחות דוא"ל אחרים דורשת לעיתים המרה של קבצי OLM לפורמטים נתמכים באופן אוניברסלי כגון MBOX (שמשמש לקוחות כגון Thunderbird ו‑Apple Mail) או PST (Outlook Personal Storage Table for Windows).

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

שימוש ב-Aspose.Email for .NET להמרה

[Aspose.Email for .NET][] מספק תכונות מקיפות לעבודה עם פורמטים שונים של דוא"ל, כולל OLM, MBOX ו‑PST. הוא מפשט משימות המרה מורכבות עם ה‑API האינטואיטיבי שלו והתיעוד הנרחב. להלן נפרט את הצעדים להמרת OLM ל‑MBOX ול‑PST באמצעות C#.

כדי להתחיל, התקן את חבילת NuGet של Aspose.Email בפרויקט .NET שלך:

Install-Package Aspose.Email

חבילה זו כוללת את כל המחלקות הדרושות לטיפול בקבצי OLM, MBOX ו‑PST.

המרת OLM ל-MBOX

פורמט MBOX מאחסן הודעות דוא"ל ככניסות MIME משולבות, נפוץ בשימוש על ידי לקוחות דוא"ל קוד פתוח. למטה נמצא דוגמת קוד פשוטה אך יעילה שממירה את כל ההודעות מתיקיית OLM לקובץ MBOX. היא משתמשת בחברי ה‑API הבאים:

שלבים

  1. הגדר את נתיבי הקבצים עבור קובץ ה‑OLM הקלט וקובץ ה‑MBOX הפלט.
  2. פתח את קובץ ה‑OLM באמצעות OlmStorage.FromFile.
  3. צור כותב MBOX באמצעות MboxrdStorageWriter עם נתיב הפלט והאפשרויות שצוינו.
  4. גש לתיקיית “Inbox” מקובץ ה‑OLM באמצעות חיפוש שאינו רגיש לאותיות.
  5. עבור על כל הודעות MAPI בתיקיית “Inbox”.
  6. המר כל הודעת MAPI לאובייקט MailMessage סטנדרטי.
  7. כתוב כל הודעה שהומרה לקובץ ה‑MBOX.

דוגמת קוד

var olmPath = @"C:\data\archive.olm";
var mboxPath = @"C:\data\output.mbox";

// Load OLM file using OlmStorage
using (var olm = OlmStorage.FromFile(olmPath))
using (var mboxWriter = new MboxrdStorageWriter(mboxPath, new MboxSaveOptions()))
{
    // Get the folder (case-insensitive example)
    var inbox = olm.GetFolder("Inbox", true);

// Iterate MAPI messages (returns MapiMessage objects)
    foreach (MapiMessage mapi in inbox.EnumerateMapiMessages())
    {
        // Convert to MailMessage and write to MBOX
        var mail = mapi.ToMailMessage(new MailConversionOptions());
        mboxWriter.WriteMessage(mail);
    }
}

הערה:
אם אתה רוצה קובץ MBOX אחד לכל תיקייה, צור כותב נפרד עבור כל תיקיית OLM.
אם אתה מעדיף ארכיון יחיד, השתמש מחדש במופע של MboxrdStorageWriter וקרא ל-WriteMessage באופן חוזר כפי שמוצג בדוגמת הקוד למעלה.

המרת OLM ל‑PST

המרת OLM ל‑PST לעיתים דורשת לא רק העתקת הודעות אלא גם יצירת היררכיית התיקיות מחדש. דוגמת הקוד שלהלן מציגה כיצד להמיר ולהעתיק את מבנה התיקיות וההודעות מקובץ ארכיון OLM של Outlook לקובץ PST בפורמט Unicode באמצעות Aspose.Email for .NET.

חברי מפתח

שלבים

  1. הגדר את נתיבי הקבצים עבור קובץ ה‑OLM המקור וקובץ ה‑PST היעד.
  2. פתח את ארכיון ה‑OLM לקריאה וצור קובץ PST חדש לכתיבה.
  3. קבל את התיקיות ברמת העל מהארכיון OLM.
  4. הגדר פונקציית עזר למציאת תיקייה תואמת או יצירתה בתוך ה‑PST עבור שם תיקייה נתון.
  5. הגדר פונקציה רקורסיבית כדי:
    • ליצור או לקבל את תיקיית PST המתאימה לכל תיקיית OLM.
    • להעתיק את כל ההודעות מתיקיית OLM לתיקיית PST.
    • לקרוא לעצמה עבור כל תת‑תיקייה בתיקיית OLM כדי לשמור על מבנה העץ.
  6. קרא לפונקציה הרקורסיבית על כל תיקיות העל של OLM, תוך שימוש בתיקיית השורש של PST כהורה.
  7. שמור את כל היררכיית התיקיות וההודעות בקובץ PST החדש, תוך שמירה על נתוני MAPI.

דוגמת קוד

var olmPath = @"C:\data\archive.olm";
var pstPath = @"C:\data\output.pst";

// Create a new PST file
using (var olm = OlmStorage.FromFile(olmPath))
using (var pst = PersonalStorage.Create(pstPath, FileFormatVersion.Unicode))
{
    // Get top-level folders in OLM
    var rootFolders = olm.GetFolders();

// Helper: map OlmFolder -> FolderInfo in PST by recursively creating subfolders
    FolderInfo GetOrCreatePstFolder(FolderInfo parentPstFolder, string folderName)
    {
        // Try to find existing subfolder (case-insensitive)
        foreach (var sub in parentPstFolder.GetSubFolders())
        {
            if (string.Equals(sub.DisplayName, folderName, StringComparison.OrdinalIgnoreCase))
                return sub;
        }

// Create new subfolder
        return parentPstFolder.AddSubFolder(folderName);
    }

// Recursive traversal
    void ProcessOlmFolder(OlmFolder olmFolder, FolderInfo pstParent)
    {
        // Create / get the corresponding PST folder
        var pstFolder = GetOrCreatePstFolder(pstParent, olmFolder.Name);

// Copy messages: OlmFolder.EnumerateMapiMessages returns MapiMessage instances
        foreach (var mapi in olmFolder.EnumerateMapiMessages())
        {
            // AddMessage preserves MAPI data into PST
            pstFolder.AddMessage(mapi);
        }

// Recurse into OLM subfolders (OlmFolder.SubFolders property)
        foreach (var child in olmFolder.SubFolders)
        {
            ProcessOlmFolder(child, pstFolder);
        }
    }

// Note: PST.RootFolder exists; create top-level folders under it.
    foreach (var top in rootFolders)
    {
        // Skip creating a duplicate for default PST root folder names if needed
        ProcessOlmFolder(top, pst.RootFolder);
    }
}

Important: קובץ PST שנוצר זה עתה כבר כולל תיקיית Deleted Items כברירת מחדל — ולכן יש להיזהר שלא לשכפל תיקיות ברירת מחדל.

הערה:

  • שמירת סוגי תיקיות: תת‑תיקיות OLM עשויות למפות לתיקיות מיוחדות ספציפיות של Outlook (תיבת דואר נכנס, פריטים שנשלחו, לוח שנה). אם ברצונך ליצור תיקיות IPM מוגדרות מראש (כך ש‑Outlook יזהה אותן כתיקיות סטנדרטיות), השתמש ב‑PersonalStorage.CreatePredefinedFolder או ב‑GetPredefinedFolder בהתאם לתרחיש. CreatePredefinedFolder מחזיר FolderInfo. השתמש במניין StandardIpmFolder כאשר מתאים.

  • ביצועים: AddMessages (הוספה גורפת) מהיר יותר מאשר קריאות מרובות ל‑AddMessage. שקול לאסוף הודעות במנות ולהשתמש ב‑FolderInfo.AddMessages(IEnumerable) כדי להפחית קריאות דיסק.

סיכום

במאמר זה למדנו כיצד להמיר קבצי Outlook for Mac (OLM) לפורמטים PST ו‑MBOX ב‑C# באמצעות Aspose.Email for .NET. חקרנו כיצד לפתוח ולעבד ארכיוני OLM, לחלץ הודעות ולשמר היררכיות תיקיות בזמן יצוא הנתונים לפורמטים חדשים של אחסון דואר. עם Aspose.Email API, מפתחים יכולים בקלות לאוטומט תהליכי הגירת דואר חוצי פלטפורמות, ולהבטיח תאימות בין Outlook for Mac, Outlook for Windows, ו‑לקוחות קוד פתוח כגון Thunderbird.

לפרטים נוספים, עיינו בתיעוד Aspose.Email ומפרט API.

משאבים נוספים

ראה גם