대용량 PST 파일 작업
Contents
[
Hide
]
대용량 PST 파일을 처리할 때 성능이 저하될 수 있습니다. 다음 솔루션은 대용량 저장 파일을 처리할 때 앱의 성능을 향상시키는 데 도움이 됩니다.
다음 메서드 반환을 고려하십시오:
IEnumerable 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
}
선호하십시오 MessageInfo 기본 메시지 속성에 접근하기 위해.
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}");
}
다음 사용을 피하십시오: ExtractMessage 또는 EnumerateMapiMessages 모든 속성에 접근해야 할 필요가 없는 경우, 모든 메시지에 대해 메서드를 사용하십시오.
다음 사용을 고려하십시오: EnumerateMessagesEntryId 폴더에 포함된 모든 메시지 ID를 손쉽게 가져오기 위해.
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).
}
다음 사용을 고려하십시오: ExtractProperty MessageInfo에 누락된 단일 속성을 읽기 위해.
foreach (var msgId in folder.EnumerateMessagesEntryId())
{
var transportMessageHeaders =
pst.ExtractProperty(Convert.FromBase64String(msgId), KnownPropertyList.TransportMessageHeaders.Tag)
.GetString();
}
다음 사용을 고려하십시오: ExtractAttachments 첨부 파일만 필요한 경우.
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());
}
다음 사용을 고려하십시오: SaveMessageToStream pst에서 메시지를 저장해야 하는 경우.
다음 사용 대신:
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"));
}