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 באמצעות השיטה PersonalStorage.FromFile().
- קבל את אוסף התיקיות ב-PST באמצעות שיטת PersonalStorage.RootFolder.GetSubFolders().
- אחזר את המידע של התיקיות כגון שם, מספר פריטים וכו'.
דוגמת הקוד הבאה מראה כיצד לנתח קובץ 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 באמצעות שיטת PersonalStorage.FromFile().
- גש לתיקיית השורש באמצעות המאפיין PersonalStorage.RootFolder.
- קבל איסוף הודעות באמצעות שיטת FolderInfo.GetContents().
- עברו בלולאה בין ההודעות באוסף וקראו את השדות של כל הודעה.
דוגמת הקוד הבאה מראה כיצד לחלץ הודעות מקובץ 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 באמצעות שיטת PersonalStorage.FromFile().
- קבל הפניה לתיקיית אנשי הקשר באמצעות שיטת PersonalStorage.RootFolder.GetSubFolder(“אנשי קשר”).
- קבל אוסף אנשי קשר באמצעות שיטת FolderInfo.GetContents().
- עיין באוסף אנשי הקשר וקרא כל איש קשר או שמור אותו.
דוגמת הקוד הבאה מראה כיצד לחלץ אנשי קשר מקובץ 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 באמצעות תיעוד. כמו כן, תוכל לשתף את השאלות או השאילתות שלך בפורום שלנו.