बड़ी PST फ़ाइलों के साथ काम करना

Contents
[ ]

बड़ी PST फ़ाइलों को प्रोसेस करते समय प्रदर्शन घट सकता है। निम्नलिखित समाधान आपको बड़े स्टोरेज फ़ाइलों को प्रोसेस करते समय आपके ऐप के प्रदर्शन को सुधारने में मदद करेंगे।

using var pst = PersonalStorage.FromFile(@"storage.pst");

foreach (var folder in pst.RootFolder.EnumerateFolders())
foreach (var messageInfo in folder.EnumerateMessages())
{
    // Do something with message
}
foreach (var messageInfo in folder.EnumerateMessages())
{
    Console.WriteLine($"Subject: {messageInfo.Subject}");
    Console.WriteLine($"To: {messageInfo.DisplayTo}");
    Console.WriteLine($"Importance: {messageInfo.Importance}");
    Console.WriteLine($"Message Class: {messageInfo.MessageClass}");
}
foreach (var id in folder.EnumerateMessagesEntryId())
{
  // Use id to retrieve a property (ExtractProperty),
    // extract a MapiMessage (ExtractMessage),
    // extarct message attachments (ExtractAttachments),
    // save msg to a stream(SaveMessageToStream).
}
foreach (var msgId in folder.EnumerateMessagesEntryId())
{
   var transportMessageHeaders =
       pst.ExtractProperty(Convert.FromBase64String(msgId), KnownPropertyList.TransportMessageHeaders.Tag)
           .GetString();
}
foreach (var msgId in folder.EnumerateMessagesEntryId())
{
   var attachments = pst.ExtractAttachments(msgId);
}
using var pst = PersonalStorage.FromFile(@"storage.pst");

var builder = new PersonalStorageQueryBuilder();
// Unread messages
builder.HasNoFlags(MapiMessageFlags.MSGFLAG_READ);

foreach (var folder in pst.RootFolder.EnumerateFolders())
{
    var unread = folder.GetContents(builder.GetQuery());
}

के उपयोग के बजाय:

foreach (var id in folder.EnumerateMessagesEntryId())
{
    var msg = pst.ExtractMessage(id);
    msg.Save(@"message.msg");
}

उपयोग करें:

foreach (var id in folder.EnumerateMessagesEntryId())
{
    pst.SaveMessageToStream(id, File.OpenWrite(@"message.msg"));
}