PST (Personal Storage Table) یک فرمت فایل ذخیره سازی است که توسط برنامه های مختلف مایکروسافت مانند MS Outlook، Exchange و Windows Messaging استفاده می شود. فایلهای PST میتوانند پیامها، مخاطبین، تقویمها، رویدادها و غیره را ذخیره کنند. در موارد خاص، ممکن است لازم باشد یک فایل PST را تجزیه کنید و دادهها را به صورت برنامهنویسی از آن استخراج کنید. برای دستیابی به آن، این مقاله نحوه خواندن فایلهای PST MS Outlook را با استفاده از C#.NET نشان میدهد. به ویژه، شما یاد خواهید گرفت که چگونه اطلاعات پوشه ها را استخراج کنید، ایمیل ها را بخوانید و مخاطبین را از یک فایل PST واکشی کنید.
- NET API برای خواندن فایل های Outlook PST
- خواندن یک فایل PST در سی شارپ
- ایمیلهای یک فایل PST را بخوانید
- مخاطبین را از یک فایل PST استخراج کنید
NET API برای خواندن فایل های Outlook PST
Aspose.Email for .NET یک API پردازش ایمیل قدرتمند است که به شما امکان می دهد از داخل برنامه های NET ایمیل ایجاد و ارسال کنید. علاوه بر این، از کار با ایمیل های محبوب و فرمت های فایل ذخیره سازی پشتیبانی می کند. ما از این API برای خواندن اطلاعات پوشه ها، پیام ها و مخاطبین از فایل های PST استفاده خواهیم کرد. می توانید API را دانلود یا از طریق NuGet نصب کنید.
PM> Install-Package Aspose.Email -Version 22.3.0
یک فایل Outlook PST را در C#.NET بخوانید
در ادامه مراحل خواندن فایل PST و استخراج اطلاعات آن در سی شارپ آمده است.
- فایل PST را با استفاده از روش PersonalStorage.FromFile() بارگیری کنید.
- با استفاده از روش PersonalStorage.RootFolder.GetSubFolders()، مجموعه پوشه ها را در PST دریافت کنید.
- بازیابی اطلاعات پوشه ها مانند نام، تعداد موارد و غیره.
نمونه کد زیر نحوه تجزیه یک فایل 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 در سی شارپ
ایمیل ها موجودیت های اصلی هستند که توسط MS Outlook در فایل های PST ذخیره می شوند. بنابراین بیایید ببینیم که چگونه می توان پیام های ایمیل را از یک فایل PST در سی شارپ خواند.
- فایل PST را با استفاده از روش PersonalStorage.FromFile() بارگیری کنید.
- با استفاده از ویژگی PersonalStorage.RootFolder به پوشه ریشه دسترسی پیدا کنید.
- مجموعه پیام را با استفاده از روش FolderInfo.GetContents() دریافت کنید.
- پیامهای موجود در مجموعه را مرور کنید و فیلدهای هر پیام را بخوانید.
نمونه کد زیر نحوه استخراج پیام ها از فایل PST در C#.NET را نشان می دهد.
// فایل Outlook PST را بارگیری کنید
PersonalStorage pst = PersonalStorage.FromFile("PersonalStorage.pst");
// فرمت نمایش فایل PST را دریافت کنید
Console.WriteLine("Display Format: " + pst.Format);
// اطلاعات پوشه ها و پیام ها را دریافت کنید
Aspose.Email.Storage.Pst.FolderInfo folderInfo = pst.RootFolder;
// برای استخراج فایل های پیام از هر پوشه، روش بازگشتی را فراخوانی کنید
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");
// این پیام را برای پخش در قالب پیام ذخیره کنید
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 در سی شارپ
در موارد خاص، ممکن است لازم باشد اطلاعات مخاطبین ذخیره شده در یک فایل PST را استخراج کنید. مراحل زیر نحوه دسترسی به مخاطبین یک فایل PST در سی شارپ را نشان می دهد.
- فایل PST را با استفاده از روش PersonalStorage.FromFile() بارگیری کنید.
- با استفاده از روش PersonalStorage.RootFolder.GetSubFolder(“Contacts”) مرجع پوشه مخاطبین را دریافت کنید.
- مجموعه ای از مخاطبین را با استفاده از روش FolderInfo.GetContents() دریافت کنید.
- در مجموعه مخاطبین حلقه بزنید و هر مخاطب را بخوانید یا آن را ذخیره کنید.
نمونه کد زیر نحوه استخراج مخاطبین از یک فایل PST در سی شارپ را نشان می دهد.
// فایل Outlook PST را بارگیری کنید
PersonalStorage personalStorage = PersonalStorage.FromFile("SampleContacts.pst");
// پوشه Contacts را دریافت کنید
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 را برای دات نت به صورت رایگان با [دریافت مجوز موقت] امتحان کنید.
نتیجه
در این مقاله با نحوه خواندن فایل های PST به صورت برنامه نویسی در سی شارپ دات نت آشنا شدید. علاوه بر این، نحوه خواندن اطلاعات پوشه ها، واکشی ایمیل ها و استخراج مخاطبین از یک فایل PST در سی شارپ را دیده اید. علاوه بر این، می توانید با استفاده از documentation درباره Aspose.Email برای دات نت بیشتر کاوش کنید. همچنین، میتوانید سؤالات یا سؤالات خود را در [فروم 15 ما به اشتراک بگذارید.