קרא קבצי MS Outlook PST ב-C# .NET

PST (Personal Storage Table) הוא פורמט קובץ אחסון המשמש תוכניות שונות של מיקרוסופט כגון MS Outlook, Exchange ו-Windows Messaging. קובצי PST מסוגלים לאחסן הודעות, אנשי קשר, לוחות שנה, אירועים וכו’. במקרים מסוימים, ייתכן שיהיה עליך לנתח קובץ PST ולחלץ ממנו נתונים באופן תוכנתי. כדי להשיג זאת, מאמר זה מראה כיצד לקרוא קבצי MS Outlook PST באמצעות C# .NET. במיוחד, תלמד כיצד לחלץ מידע של תיקיות, לקרוא הודעות דוא"ל ולהביא אנשי קשר מקובץ PST.

.NET API לקריאת קבצי PST של Outlook

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

PM> Install-Package Aspose.Email -Version 22.3.0

קרא קובץ PST של Outlook ב-C# .NET

להלן השלבים לקריאת קובץ PST ולחלץ את המידע שלו ב-C#.

דוגמת הקוד הבאה מראה כיצד לנתח קובץ PST ולאחזר מידע של תיקיות.

// טען קובץ PST
PersonalStorage personalStorage = PersonalStorage.FromFile("PersonalStorage.pst");

// קבל את מידע התיקיות
FolderInfoCollection folderInfoCollection = personalStorage.RootFolder.GetSubFolders();

// עיין בכל תיקיה כדי להציג את המידע שלה
foreach (FolderInfo folderInfo in folderInfoCollection)
{
    Console.WriteLine("Folder: " + folderInfo.DisplayName);
    Console.WriteLine("Total items: " + folderInfo.ContentCount);
    Console.WriteLine("Total unread items: " + folderInfo.ContentUnreadCount);
    Console.WriteLine("-----------------------------------");
}

קרא אימיילים מקובץ PST ב-C#

הודעות דואר אלקטרוני הן הישויות העיקריות המאוחסנות בקבצי PST על ידי MS Outlook. אז בואו נראה איך לקרוא הודעות דואר אלקטרוני מקובץ PST ב-C#.

דוגמת הקוד הבאה מראה כיצד לחלץ הודעות מקובץ PST ב-C# .NET.

// טען את קובץ PST של Outlook
PersonalStorage pst = PersonalStorage.FromFile("PersonalStorage.pst");

// קבל את פורמט התצוגה של קובץ ה-PST
Console.WriteLine("Display Format: " + pst.Format);

// קבל את המידע על התיקיות וההודעות
Aspose.Email.Storage.Pst.FolderInfo folderInfo = pst.RootFolder;

// קרא לשיטה הרקורסיבית כדי לחלץ קבצי msg מכל תיקיה
ExtractMsgFiles(folderInfo, pst);

///<summary>
/// זוהי שיטה רקורסיבית להצגת תוכן של תיקיה
///</summary>
///<param name="folderInfo"></param>
///<param name="pst"></param>
private static void ExtractMsgFiles(Aspose.Email.Storage.Pst.FolderInfo folderInfo, PersonalStorage pst)
{
    // הצג את שם התיקיה
    Console.WriteLine("Folder: " + folderInfo.DisplayName);
    Console.WriteLine("==================================");
            
    // עברו בלולאה בין כל ההודעות בתיקייה זו
    Aspose.Email.Storage.Pst.MessageInfoCollection messageInfoCollection = folderInfo.GetContents();
    foreach (Aspose.Email.Storage.Pst.MessageInfo messageInfo in messageInfoCollection)
    {
        Console.WriteLine("Saving message {0} ....", messageInfo.Subject);
                
        // קבל את ההודעה במופע MapiMessage
        MapiMessage message = pst.ExtractMessage(messageInfo);
                
        // שמור הודעה זו בדיסק בפורמט msg
        message.Save(message.Subject.Replace(":", " ") + ".msg");
                
        // שמור הודעה זו כדי להזרים בפורמט msg
        MemoryStream messageStream = new MemoryStream();
        message.Save(messageStream);
    }

    // קרא לשיטה זו באופן רקורסיבי עבור כל תיקיית משנה
    if (folderInfo.HasSubFolders == true)
    {
        foreach (Aspose.Email.Storage.Pst.FolderInfo subfolderInfo in folderInfo.GetSubFolders())
        {
            ExtractMsgFiles(subfolderInfo, pst);
        }
    }
}

חלץ אנשי קשר מקובץ PST ב-C#

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

דוגמת הקוד הבאה מראה כיצד לחלץ אנשי קשר מקובץ PST ב-C#.

// טען את קובץ PST של Outlook
PersonalStorage personalStorage = PersonalStorage.FromFile("SampleContacts.pst");

// קבל את תיקיית אנשי הקשר
FolderInfo folderInfo = personalStorage.RootFolder.GetSubFolder("Contacts");

// עברו בלולאה בין כל אנשי הקשר בתיקייה זו
MessageInfoCollection messageInfoCollection = folderInfo.GetContents();

foreach (MessageInfo messageInfo in messageInfoCollection)
{
    // קבל את פרטי הקשר
    MapiMessage mapi = personalStorage.ExtractMessage(messageInfo);
    
    // העבר ל-MapiContact
    MapiContact contact = (MapiContact)mapi.ToMapiMessageItem();

    // הצג חלק מהתוכן על המסך
    Console.WriteLine("Name: " + contact.NameInfo.DisplayName);
    
    // שמור בדיסק בפורמט MSG
    if (contact.NameInfo.DisplayName != null)
    {
        MapiMessage message = personalStorage.ExtractMessage(messageInfo);
        
        // היפטר מתווים לא חוקיים שלא ניתן להשתמש בהם כשם קובץ
        string messageName = message.Subject.Replace(":", " ").Replace("\\", " ").Replace("?", " ").Replace("/", " ");
        message.Save(dataDir + "Contacts\\" + messageName + "_out.msg");
    }
}

קבל רישיון API בחינם

אתה יכול לנסות את Aspose.Email עבור .NET בחינם על ידי קבלת רישיון זמני.

סיכום

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

ראה גם