Hello Team, we are out here to parse and fetch the data for PST & OLM Files in most time consuming and efficient manner, and we have 2 goals here. Both the parsing logics are consuming too much time and we want to optimise it can you help with it?
- Mail List Fetching from one folder.
- Mail Detail Fetching for one mail.
We need the optimal code for it in Aspose.Email for DotNet.
- Mail List Fetching Using Folder Id
public static string GetMailListAsJson(string emailFilePath, string folderEntryId)
{
var pst = PersonalStorage.FromFile(emailFilePath);
var targetFolder = pst.GetFolderById(folderEntryId);
var mailDetailsList = new List<MailListInfo>();
foreach (var messageInfo in targetFolder.EnumerateMessages())
{
try
{
MapiMessage msg = pst.ExtractMessage(messageInfo.EntryId);
var mailDetail = new MailListInfo
{
MessageId = messageInfo.EntryIdString,
Subject = msg.Subject ?? "No Subject",
Sender = msg.SenderEmailAddress ?? msg.SenderName ?? "Unknown Sender",
Content = msg.Body.Substring(0, 100) + "..." ?? "No Content";
HasAttachments = msg.Attachments?.Count > 0
};
mailDetailsList.Add(mailDetail);
}
catch (Exception ex)
{
Console.WriteLine($"Error processing message: {ex.Message}");
}
}
}
- Mail Detail Fetching for a single mail using message id
private static MailDetailInfo ProcessFolderForMessage(PersonalStorage pst, FolderInfo folder, string messageId)
{
foreach (var messageInfo in folder.EnumerateMessages())
{
try
{
MapiMessage msg = pst.ExtractMessage(messageId);
return new MailDetailInfo
{
Subject = msg.Subject ?? "No Subject",
Sender = msg.SenderEmailAddress ?? "Unknown Sender",
ContentHtml = msg.BodyHtml ?? msg.Body ?? "No Content",
Recipients = GetRecipients(msg),
Attachments = GetAttachments(msg)
};
}
catch (Exception ex)
{
Console.WriteLine($"Error processing message: {ex.Message}");
}
}
return null;
}
private static List<string> GetRecipients(MapiMessage msg)
{
var recipientsList = new List<string>();
foreach (var recipient in msg.Recipients)
{
recipientsList.Add(recipient.EmailAddress);
}
return recipientsList;
}
private static List<string> GetAttachments(MapiMessage msg)
{
var attachmentsList = new List<string>();
foreach (var attachment in msg.Attachments)
{
attachmentsList.Add(attachment.LongFileName ?? attachment.DisplayName);
}
return attachmentsList;
}
}