قراءة ملفات MS Outlook PST في C# .NET

PST (جدول التخزين الشخصي) هو تنسيق ملف تخزين تستخدمه برامج Microsoft المختلفة مثل MS Outlook و Exchange و Windows Messaging. يمكن لملفات PST تخزين الرسائل وجهات الاتصال والتقويمات والأحداث وما إلى ذلك. في بعض الحالات ، قد تحتاج إلى تحليل ملف PST واستخراج البيانات منه برمجيًا. لتحقيق ذلك ، توضح هذه المقالة كيفية قراءة ملفات MS Outlook PST باستخدام C# .NET. على وجه الخصوص ، ستتعلم كيفية استخراج معلومات المجلدات وقراءة رسائل البريد الإلكتروني وجلب جهات الاتصال من ملف PST.

.NET API لقراءة ملفات Outlook PST

Aspose.Email for .NET هي واجهة برمجة تطبيقات قوية لمعالجة البريد الإلكتروني تتيح لك إنشاء وإرسال رسائل البريد الإلكتروني من داخل تطبيقات .NET. بالإضافة إلى ذلك ، فهو يدعم العمل مع تنسيقات البريد الإلكتروني والتخزين الشائعة. سنستخدم واجهة برمجة التطبيقات هذه لقراءة معلومات المجلدات والرسائل وجهات الاتصال من ملفات PST. يمكنك إما تنزيل API أو تثبيته عبر NuGet.

PM> Install-Package Aspose.Email -Version 22.3.0

اقرأ ملف Outlook PST في 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 باستخدام طريقة 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;

// اتصل بالطريقة العودية لاستخراج ملفات 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#.

// قم بتحميل ملف Outlook PST
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 باستخدام التوثيق. يمكنك أيضًا مشاركة أسئلتك أو استفساراتك على المنتدى.

أنظر أيضا