PST फ़ाइलें पढ़ें और जानकारी प्राप्त करें

PST फ़ाइलें पढ़ें और जानकारी प्राप्त करें

Aspose.Email for .NET Microsoft Outlook PST फ़ाइलें पढ़ने के लिए एक API प्रदान करता है। आप डिस्क या स्ट्रीम से PST फ़ाइल को एक इंस्टेंस में लोड कर सकते हैं PersonalStorage क्लास और उसकी सामग्री की जानकारी प्राप्त करें, जैसे फ़ोल्डर्स, सबफ़ोल्डर्स, और संदेश। API PST फ़ोल्डर से संदेशों को ट्रैवर्स करते समय सर्च फ़ोल्डर शामिल करने की क्षमता भी प्रदान करता है।

PST फ़ाइल लोड करें

Outlook PST फ़ाइल को एक इंस्टेंस में लोड किया जा सकता है PersonalStorage क्लास। नीचे दिया गया कोड स्निपेट दिखाता है कि PST फ़ाइल कैसे लोड करें।

फ़ोल्डर जानकारी प्रदर्शित करें

PST फ़ाइल लोड करने के बाद PersonalStorage क्लास, आप फ़ाइल का डिस्प्ले नाम, रूट फ़ोल्डर, सबफ़ोल्डर और संदेशों की संख्या की जानकारी प्राप्त कर सकते हैं। निम्नलिखित कोड स्निपेट दर्शाता है कि PST फ़ाइल, फ़ोल्डर और फ़ोल्डर में संदेशों की संख्या कैसे प्रदर्शित करें।

केवल उपयोगकर्ता-परिभाषित फ़ोल्डर प्राप्त करें

PST/OST फ़ाइलों में उपयोगकर्ता द्वारा बनाए गए फ़ोल्डर हो सकते हैं। Aspose.Email उपयोगकर्ता-परिभाषित फ़ोल्डर तक केवल पहुंच प्रदान करने की क्षमता देता है, जिसका उपयोग आप कर सकते हैं PersonalStorageQueryBuilder.OnlyFoldersCreatedByUser प्रॉपर्टी। आप इसे सेट कर सकते हैं PersonalStorageQueryBuilder.OnlyFoldersCreatedByUser प्रॉपर्टी को true सेट करें ताकि केवल उपयोगकर्ता-परिभाषित फ़ोल्डर प्राप्त हों। नीचे दिया गया कोड स्निपेट उपयोग दर्शाता है PersonalStorageQueryBuilder.OnlyFoldersCreatedByUser उपयोगकर्ता-परिभाषित फ़ोल्डर्स प्राप्त करने के लिए।

जांचें कि फ़ोल्डर पूर्वपरिभाषित है या नहीं

जब आप PST (Personal Storage Table) फ़ाइल के भीतर फ़ोल्डर्स को खोलते और निरीक्षण करते हैं, तो आप जांच सकते हैं कि प्रत्येक फ़ोल्डर प्री-डिफाइंड फ़ोल्डर प्रकार है या प्री-डिफाइंड फ़ोल्डर प्रकार का सबफ़ोल्डर, और प्रत्येक फ़ोल्डर की जानकारी प्राप्त कर सकते हैं।

यह FolderInfo.GetPredefinedType(bool getForTopLevelParent) मेथड यह जांचने की अनुमति देता है कि फ़ोल्डर StandardIpmFolder. यदि getForTopLevelParent पैरामीटर true है, तो मेथड लौटाता है StandardIpmFolder शीर्ष-स्तर पैरेंट फ़ोल्डर के लिए enum मान। यह निर्धारित करता है कि वर्तमान फ़ोल्डर पूर्वपरिभाषित फ़ोल्डर का सबफ़ोल्डर है या नहीं। यदि getForTopLevelParent पैरामीटर false है, तो यह लौटाता है StandardIpmFolder वर्तमान फ़ोल्डर के लिए enum मान।

निम्न कोड नमूना दर्शाता है कि इस सुविधा को अपने प्रोजेक्ट में कैसे लागू करें:

PersonalStorage.FromFile("my.pst"))
        {
            FolderInfoCollection folders = pst.RootFolder.GetSubFolders();

            foreach (FolderInfo folder in folders)
            {
                Console.WriteLine($"Folder: {folder.DisplayName}");
                Console.WriteLine($"Is predefined: {folder.GetPredefinedType(false) != StandardIpmFolder.Unspecified}");
                Console.WriteLine("-----------------------------------");
            }
        }

पैरेंट फ़ोल्डर जानकारी प्राप्त करें

निम्नलिखित कोड स्निपेट दिखाता है कि पैरेंट फ़ोल्डर की जानकारी कैसे प्राप्त करें MessageInfo.

पथ द्वारा उपफ़ोल्डर प्राप्त करें

यह FolderInfo.GetSubFolder(string name, bool ignoreCase, bool handlePathSeparator) विधि अधिभार आपको वर्तमान PST फ़ोल्डर से निर्दिष्ट नाम के साथ एक उपफ़ोल्डर प्राप्त करने में सक्षम करेगा।

मेथड निम्नलिखित पैरामीटर लेता है:

  • name - प्राप्त करने के लिए उपफ़ोल्डर का नाम निर्दिष्ट करता है।
  • ignoreCase - निर्धारित करता है कि उपफ़ोल्डर नाम की खोज केस-सेंसिटिव होनी चाहिए या केस-इनसेंसिटिव। यदि true सेट किया जाता है, तो खोज केस-इनसेंसिटिव होगी, अन्यथा केस-सेंसिटिव होगी।
  • handlePathSeparator - निर्दिष्ट करता है कि यदि निर्दिष्ट फ़ोल्डर नाम में बैकस्लैश हों तो उसे पथ के रूप में माना जाए। यदि true सेट किया जाता है, तो विधि फ़ोल्डर नाम को पथ के रूप में व्याख्या करेगी और पथ का उपयोग करके उपफ़ोल्डर में नेविगेट करने का प्रयास करेगी। यदि false सेट किया जाता है, तो विधि फ़ोल्डर नाम को एक साधारण नाम मानती है और सटीक नाम मिलान वाले उपफ़ोल्डर की खोज करती है।

निम्न कोड नमूना दर्शाता है कि इस विधि को अपने प्रोजेक्ट में कैसे लागू किया जाए:

var folder = pst.RootFolder.GetSubFolder(@"Inbox\Reports\Jan", true, true);
In this sample, the method will return a Jan named folder that is located at the Inbox\Reports\ path relative to the root folder.

RSS फ़ीड्स और खोजने योग्य फ़ोल्डर्स

PersonalStorage में मानक RSS फ़ीड्स फ़ोल्डर

Aspose.Email आपको उस प्री-डिफाइंड फ़ोल्डर का रेफ़रेंस प्राप्त करने में सक्षम बनाता है जिसमें RSS फ़ीड्स होते हैं। यह उपयोगी हो सकता है यदि आप प्रोग्रामैटिक रूप से Outlook PST फ़ाइल में संग्रहीत RSS फ़ीड्स तक पहुंचना और उन्हें नियंत्रित करना चाहते हैं। RssFeeds का मान इस को दें StandardIpmFolder enum।

निम्न कोड उदाहरण दर्शाता है कि कैसे RSS फ़ीड्स फ़ोल्डर प्राप्त करें।

using (var pst = PersonalStorage.FromFile("my.pst", false))
{
    var rssFolder = pst.GetPredefinedFolder(StandardIpmFolder.RssFeeds);
}

RSS फ़ीड्स फ़ोल्डर जोड़ने के लिए, निम्न कोड स्निपेट उपयोग करें:

using (var pst = PersonalStorage.Create("my.pst", FileFormatVersion.Unicode))
{
    var rssFolder = pst.CreatePredefinedFolder("RSS Feeds", StandardIpmFolder.RssFeeds);
}

खोज योग्य फ़ोल्डरों का पार्सिंग

PST/OST में सामान्य फ़ोल्डर प्रकार के अलावा सर्चेबल फ़ोल्डर्स भी हो सकते हैं। Aspose.Email प्रदान करता है FolderKind ऐसी सर्च फ़ोल्डर्स से संदेश निर्धारित करने के लिए एन्यूमेरटर, साथ में EnumerateFolders और GetSubFolders मेथड्स। निम्न कोड स्निपेट दर्शाता है कि खोज योग्य फ़ोल्डरों को कैसे पार्स करें।

using (PersonalStorage pst = PersonalStorage.FromFile("my.pst"))
        {
            FolderInfoCollection folders = pst.RootFolder.GetSubFolders(FolderKind.Search | FolderKind.Normal);

            // Browse through each folder to display folder name and number of messages
            foreach (FolderInfo folder in folders)
            {
                Console.WriteLine($"Folder: {folder.DisplayName}");

                FolderInfoCollection subFolders = folder.GetSubFolders(FolderKind.Search | FolderKind.Normal);
                foreach (FolderInfo subFolder in subFolders)
                {
                    Console.WriteLine($"Sub-folder: {subFolder.DisplayName}");
                }
            }
        }

PST फ़ाइल ट्रैवर्सल API

ट्रैवर्सल API आपको सभी PST आइटम्स को यथासंभव निकालने की अनुमति देता है, बिना अपवाद फेंके, यहाँ तक कि यदि मूल फ़ाइल का कुछ डेटा क्षतिग्रस्त हो। नीचे दिए गए चरण दर्शाते हैं कि इस API का उपयोग कैसे किया जाए।

उपयोग करें PersonalStorage कंस्ट्रक्टर और Load FromFile मेथड के बजाय मेथड।

कंस्ट्रक्टर आपको कॉलबैक मेथड परिभाषित करने की अनुमति देता है।

using (var currentPst = new PersonalStorage((exception, itemId) => { /* Exception handling  code. */ }))

लोडिंग और ट्रैवर्सल अपवाद कॉलबैक मेथड के माध्यम से उपलब्ध होंगे।

यह Load मेथड ’true’ लौटाता है यदि फ़ाइल सफलतापूर्वक लोड हो गई है और आगे ट्रैवर्स करना संभव है। यदि फ़ाइल क्षतिग्रस्त है और ट्रैवर्स सम्भव नहीं है, तो ‘false’ लौटाया जाता है।

if (currentPst.Load(inputStream))

यह भ्रष्ट PST फ़ाइलों को भी अपवाद फेंके बिना खोलने और ट्रैवर्स करने की अनुमति देता है। अपवाद और भ्रष्ट आइटम्स को कॉलबैक मेथड द्वारा संभाला जाएगा।

using (PersonalStorage pst = new PersonalStorage((exception, itemId) => { /* Exception handling  code. */ }))
{
    if (pst.Load(@"test.pst"))
    {
        GetAllMessages(pst, pst.RootFolder);
    }
}

private static void GetAllMessages(PersonalStorage pst, FolderInfo folder)
{
    foreach (var messageEntryId in folder.EnumerateMessagesEntryId())
    {
        MapiMessage message = pst.ExtractMessage(messageEntryId);
    }
    foreach (var subFolder in folder.GetSubFolders())
    {
        GetAllMessages(pst, subFolder);
    }
}

PST फ़ाइलों से आइटम श्रेणी रंग प्राप्त करें

Aspose.Email उपयोगकर्ताओं को PST फ़ाइलों से श्रेणी जानकारी, जिसमें नाम और रंग शामिल हैं, प्राप्त करने की अनुमति देता है। श्रेणी डेटा को निकाला जा सकता है और व्यक्तिगत PST आइटम्स के साथ मिलाया जा सकता है। निम्न API सदस्यों का उपयोग करें:

  • OutlookCategoryColor enum - श्रेणी से जुड़ा रंग दर्शाता है।
  • PstItemCategory क्लास - श्रेणी नाम और रंग के लिए प्रॉपर्टीज़ प्रदान करती है।
  • GetCategories मेथड - श्रेणियों की सूची उनके नाम और रंगों के साथ प्राप्त करता है।

निम्न कोड नमूने दिखाते हैं कि PST फ़ाइल से सभी उपलब्ध श्रेणियाँ कैसे प्राप्त करें और किसी विशिष्ट ईमेल संदेश से जुड़ी श्रेणी को कैसे मिलाएँ।

PST से उपलब्ध श्रेणियाँ प्राप्त करें

using (var pst = PersonalStorage.FromFile("mailbox.pst"))
{
   var categories = pst.GetCategories();
   
   foreach(var category in categories)
   {
       Console.WriteLine(category);
   }
}

श्रेणी नाम को उसके रंग से मिलाएँ

using (var pst = PersonalStorage.FromFile("mailbox.pst"))
{
    // Get all categories from the PST
    var availableCategories = pst.GetCategories();
    
    // Extract a message from the PST and retrieve the list of category names for the message
    var messageCategoryList = FollowUpManager.GetCategories(pst.ExtractMessage(messageInfo));
    
    // Iterate through each category in the message and match it with the PST category list
    foreach (var messageCategory in messageCategoryList)
    {
        var category = availableCategories.Find(c => c.Name.Equals(messageCategory, StringComparison.OrdinalIgnoreCase));

        if (category != null)
        {
            // Print the category name and its associated color
            Console.WriteLine(category);
        }
        else
        {
            Console.WriteLine($"Category: {messageCategory}, Color: Not found");
        }
    }
}