MBOX メッセージのフィルタリングと抽出

メッセージフィルタリングの役割

大規模な MBOX アーカイブを扱う際にすべてのメッセージをメモリにロードするのは非効率で不要です。多くの場合、開発者は件名、送信者、受信者、タイムスタンプなどの基本メタデータをスキャンするだけで以下を行います:

  • UI にメッセージ一覧を表示
  • 抽出前にカスタムフィルタを適用
  • レポートや要約を生成
  • 検索用にメッセージをインデックス化

フィルタリングにより、メッセージ本文や添付ファイル全体を解析するオーバーヘッドが回避され、アプリケーションが高速かつスケーラブルになります。

メッセージメタデータへのアクセス

Aspose.Email は以下を提供します MboxMessageInfo 完全な MailMessage コンテンツを読み込まずに基本的なメタデータにアクセスするために設計されたクラスです。概要オブジェクトとして機能し、呼び出し時に返されます: MboxStorageReader.EnumerateMessageInfo().

が公開する主要プロパティ MboxMessageInfo メッセージに関する情報を取得するには、次を含めます:

  • DateTime Date - メッセージの日付を取得します
  • MailAddress From - 送信者アドレスを取得します
  • string Subject - メッセージの件名を取得します
  • MailAddressCollection To - メッセージの受信者アドレスコレクションを取得します
  • MailAddressCollection CC - CC 受信者のアドレスコレクションを取得します
  • MailAddressCollection Bcc - メッセージの BCC 受信者のアドレスコレクションを取得します
MboxStorageReader reader = MboxStorageReader.CreateReader(fileName, new MboxLoadOptions());

foreach (var mboxMessageInfo in reader.EnumerateMessageInfo())
{
    Console.Writeline($"Subject: {mboxMessageInfo.Subject}");
    Console.Writeline($"Date: {mboxMessageInfo.Date}");
    Console.Writeline($"From: {mboxMessageInfo.From}");
    Console.Writeline($"To: {mboxMessageInfo.To}");
    Console.Writeline($"CC: {mboxMessageInfo.CC}");
    Console.Writeline($"Bcc: {mboxMessageInfo.Bcc}");
}

EntryId によるメッセージ抽出

この MboxStorageReader クラスには EnumerateMessageInfo() メソッドは、MBOX ファイル内の各メッセージを反復処理できるようにします。このメソッドを使用すると、ストレージ全体を繰り返し走査することなく個々のメッセージを抽出でき、パフォーマンスが向上し処理時間が短縮されます。

この MboxMessageInfo class は以下を提供します EntryId プロパティで、MBOX ファイル内の各メッセージのユニークな識別子へのアクセスを提供します。この識別子はデータベースに保存したり、必要に応じて特定のメッセージを迅速に検索・抽出する参照として使用できます。

この ExtractMessage(string id) メソッドは MboxStorageReader このクラスは、開発者が固有の EntryId に基づいてメッセージを抽出できるようにします。 ExtractMessage(string id) メソッドを使用すると、保存された EntryId を利用して対応するメッセージを取得し、追加の操作を行うことができます。

以下のコードサンプルは、識別子を使用して MBOX ファイルからメッセージを抽出する方法を示しています。

MboxStorageReader reader = MboxStorageReader.CreateReader("my.mbox", new MboxLoadOptions());

foreach (MboxMessageInfo msgInfo in reader.EnumerateMessageInfo())
{
    MailMessage eml = reader.ExtractMessage(msgInfo.EntryId, new EmlLoadOptions());
}

MailQuery を使用した MBOX メールのフィルタリングと検索

Aspose.Email for .NET は、カスタムクエリに基づいてメールボックスアーカイブ内のメッセージをフィルタリングまたは検索する機能を提供します。これにより、開発者は特定の条件に一致するメッセージだけを取得でき、大規模なメールアーカイブファイルのパフォーマンスと使いやすさが向上します。

以下のコードサンプルは、MailQuery API を使用してメールストレージファイルに検索条件を適用する方法を示します。この例では、件名に「Project Update」というフレーズが含まれ、かつ本日以前に送信されたメッセージが選択されます。

using Aspose.Email.Storage.Mbox;
using Aspose.Email;

var reader = MboxStorageReader.CreateReader("input.mbox", new MboxLoadOptions());
var mqb = new MailQueryBuilder();
mqb.Subject.Contains("Project Update");
mqb.SentDate.Before(DateTime.Today);

foreach (var message in reader.EnumerateMessages(mqb.GetQuery()))
{
    Console.WriteLine("Subject: " + message.Subject);
}

MBOX からメッセージを読むときのロードオプション設定

以下の機能により、メッセージのロードおよび処理に関するさまざまなオプションを指定できます。

  • MailStorageConverter.MboxMessageOptions プロパティ - Mbox ストレージを解析する際のメールロードオプションを取得または設定します。

  • MboxrdStorageReader.ReadNextMessage(EmlLoadOptions options) メソッド - EmlLoadOptions パラメーターは Mbox ストレージからメッセージを読む際のオプションを指定します。

var reader = new MboxrdStorageReader(fileName, new MboxLoadOptions());
// Read messages preserving tnef attachments.
var eml = reader.ReadNextMessage(new EmlLoadOptions {PreserveTnefAttachments = true});
MailStorageConverter.MboxMessageOptions(new EmlLoadOptions {PreserveTnefAttachments = true});
// Convert messages from mbox to pst preserving tnef attachments.
var pst = MailStorageConverter.mboxToPst("Input.mbox", "Output.pst");