बिगड़े हुए PST/OST फ़ाइलें पढ़ें

बिगड़े हुए स्टोरेज फ़ाइलों को संभालना

कभी-कभी कुछ समस्याओं के कारण PST/OST पढ़ना संभव नहीं होता। उदाहरण के लिए, कुछ डेटा ब्लॉक बिगड़ सकते हैं। ऐसे मामलों में, आमतौर पर विधि को कॉल करने पर अपवाद उत्पन्न होते हैं। EnumerateFolders, EnumerateMessages, GetContents, GetSubfolders, आदि मेथड्स। लेकिन व्यक्तिगत संदेश या फ़ोल्डर स्टोरेज में अप्रभावित रह सकते हैं।

आइटम पहचानकर्ताओं को खोजने की विधियां

निम्न विधियां आइटम पहचानकर्ताओं को पदक्रमित रूप में खोजने की अनुमति देती हैं।

इन विधियों से प्राप्त किए गए पहचानकर्ता संदेशों और फ़ोल्डरों को प्राप्त करने के लिए उपयोग किए जा सकते हैं।

NOTE: यह ध्यान रखना चाहिए कि इसके फायदों के बावजूद, ऐसे बिगड़े हुए स्टोरेज होते हैं जिन्हें इन विधियों का उपयोग करके भी नहीं पढ़ा जा सकता।

PST फ़ाइल पारगमन

निम्न कोड नमूना PST फ़ाइल का पारगमन और फ़ोल्डर व संदेशों को निकालना दर्शाता है। पहचानकर्ताओं की सूची पाने के लिए FindMessages और FindSubfolders विधियों का उपयोग करें। फिर पहचानकर्ता को पास किया जाता है। ExtractMessage या GetFolderById तत्व निकालने की विधि।

using (var pst = PersonalStorage.FromFile(fileName))
{
    ExploreCorruptedPst(pst, pst.RootFolder.EntryIdString);
}

public static void ExploreCorruptedPst(PersonalStorage pst, string rootFolderId)
{
    var messageIdList = pst.FindMessages(rootFolderId);

    foreach (var messageId in messageIdList)
    {
        try
        {
            var msg = pst.ExtractMessage(messageId);
            Console.WriteLine( "- " + msg.Subject);
        }
        catch
        {
            Console.WriteLine("Message reading error. Entry id: " + messageId);
        }
    }

    var folderIdList = pst.FindSubfolders(rootFolderId);

    foreach (var subFolderId in folderIdList)
    {
        if (subFolderId != rootFolderId)
        {
            try
            {
                FolderInfo subfolder = pst.GetFolderById(subFolderId);
                Console.WriteLine(subfolder.DisplayName);
            }
            catch
            {
                Console.WriteLine("Message reading error. Entry id: " + subFolderId);
            }

            ExplodeCorruptedPst(pst, subFolderId);
        }
    }
}