فایل‌های PST MS Outlook را در C#.NET بخوانید

PST (Personal Storage Table) یک فرمت فایل ذخیره سازی است که توسط برنامه های مختلف مایکروسافت مانند MS Outlook، Exchange و Windows Messaging استفاده می شود. فایل‌های PST می‌توانند پیام‌ها، مخاطبین، تقویم‌ها، رویدادها و غیره را ذخیره کنند. در موارد خاص، ممکن است لازم باشد یک فایل PST را تجزیه کنید و داده‌ها را به صورت برنامه‌نویسی از آن استخراج کنید. برای دستیابی به آن، این مقاله نحوه خواندن فایل‌های PST MS Outlook را با استفاده از C#.NET نشان می‌دهد. به ویژه، شما یاد خواهید گرفت که چگونه اطلاعات پوشه ها را استخراج کنید، ایمیل ها را بخوانید و مخاطبین را از یک فایل 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 و واکشی اطلاعات پوشه ها را نشان می دهد.

// فایل 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 در سی شارپ را نشان می دهد.

// فایل 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 ما به اشتراک بگذارید.

همچنین ببینید