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");