Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save aspose-com-gists/0d40f47fed0cc335815cc5c6632d7051 to your computer and use it in GitHub Desktop.
Save aspose-com-gists/0d40f47fed0cc335815cc5c6632d7051 to your computer and use it in GitHub Desktop.
Filter and Paginate MBOX Emails in C#
var reader = MboxStorageReader.CreateReader("input.mbox", new MboxLoadOptions());
// Filter: messages from a specific domain and sent this year
var mqb = new MailQueryBuilder();
mqb.From.Contains("@example.com");
mqb.SentDate.Since(new DateTime(DateTime.Today.Year, 1, 1));
var query = mqb.GetQuery();
// Page through message info (metadata only)
int pageSize = 5;
int index = 0;
bool done = false;
while (!done)
{
var page = reader.EnumerateMessageInfo(query).Skip(index).Take(pageSize).ToList();
if (page.Count == 0)
break;
foreach (var info in page)
{
Console.WriteLine($"Subject: {info.Subject}, From: {info.From}, Date: {info.Date}");
}
index += pageSize;
done = page.Count < pageSize;
}
var reader = MboxStorageReader.CreateReader("input.mbox", new MboxLoadOptions());
// Build a query: subject contains "Project Update" and sent before today
var mqb = new MailQueryBuilder();
mqb.Subject.Contains("Project Update");
mqb.SentDate.Before(DateTime.Today);
var query = mqb.GetQuery();
// Enumerate and display filtered messages
foreach (var message in reader.EnumerateMessages(query))
{
Console.WriteLine("Subject: " + message.Subject);
Console.WriteLine("Date: " + message.Date);
Console.WriteLine("From: " + message.From);
Console.WriteLine(new string('-', 40));
}
var reader = MboxStorageReader.CreateReader("input.mbox", new MboxLoadOptions());
int pageSize = 10;
int currentIndex = 0;
bool hasMore = true;
while (hasMore)
{
var messages = reader.EnumerateMessages(currentIndex, pageSize);
int count = 0;
foreach (var message in messages)
{
Console.WriteLine($"[Message {currentIndex + count + 1}] Subject: {message.Subject}");
count++;
}
if (count < pageSize)
hasMore = false; // No more messages
currentIndex += pageSize;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment