Exchangeメールボックスからメッセージをフィルタリング
Aspose.Email for C++ は開発者が Exchange メールボックス内のメッセージをフィルタリングするために使用できる IEWSClient, MailQuery、および ExchangeQueryBuilder. メッセージは日付、送信者、ドメイン、MessageID、配信通知など多くの条件でフィルタリングできます。
フォルダーからメッセージを取得してさらに処理するには、 IEWSClient. 以下のメソッドがあります:
- ListMessages() - メールボックスからすべてのメッセージを取得します。
- ListMessages() オーバーロード - 特定の条件に一致するメッセージのみを返します。これは MailQuery 件名キーワード、日付範囲、アドレスベースのフィルタリングなどのフィルタ規則を定義します。
IEWsClient を使用したメッセージのフィルタリング
以下のコードサンプルは、Aspose.Email for C++ を使用して Exchange Web Services (EWS) 経由で Exchange Server から特定のメールを検索・取得する方法を示しています。これにより、Exchange サーバー (この例では Office 365) に接続し、件名に "Newsletter" を含み、今日受信したメッセージを検索するクエリを作成し、受信トレイに対してクエリを実行し、該当メッセージを取得し、エラーハンドリングを含む接続ライフサイクルを適切に処理する全プロセスが示されます。
- 以下を使用して Exchange サーバーに接続します IEWSClient.
- 作成する MailQuery または ExchangeQueryBuilder フィルタ条件を定義します。
- 呼び出す ListMessages(folderUri, query) フィルタ済み結果を取得するために。
条件でメッセージをフィルタリング
上記のコードサンプルは、メールの件名と日付に基づいてメッセージをフィルタリングします。他のプロパティでもフィルタリングできます。以下は、… を使用して条件を設定する例です MailQuery.
本日の日付でフィルタリング
以下のコードサンプルは、本日受信したメールを検索するクエリの構築方法を示しています。
日付範囲でフィルタリング
以下のコードサンプルは、過去 7 日間に受信したメールを検索するクエリの構築方法を示しています。
特定の送信者でフィルタリング
以下のコードサンプルは、特定の送信者からのメールを検索するクエリの構築方法を示しています。
ドメインでフィルタリング
以下のコードサンプルは、特定のドメインからのメールを検索するクエリの構築方法を示しています。
受信者でフィルタリング
以下のコードサンプルは、特定の受信者に送信されたメールを検索するクエリの構築方法を示しています。
MessageIDでフィルタリング
以下のコードサンプルは、MessageId によって特定のメールを検索するクエリの構築方法を示しています。
メール配信通知をフィルタリング
以下のコードサンプルは、メール配信通知 (MDN) を検索するクエリの構築方法を示しています。
メッセージサイズでフィルタリング
以下のコードサンプルは、特定のサイズ以上のメールを検索するクエリの構築方法を示しています。
複雑なクエリを構築
使用する場合 MailQueryBuilder または ExchangeQueryBuilder, 設定した各プロパティはフィルタ条件を作成します。これらの条件が個別のステートメントで定義されている場合、論理 AND で組み合わされ、すべての条件が一致したメッセージが返されます。
これにより、開発者は次のような正確なフィルタを構築できます:
- 日付範囲内のメール
- 特定のドメインからのメール
- 複数の条件に同時に一致するメール
ANDでクエリを結合
複数のビルダー プロパティを順番に使用すると、自動的に AND 演算が作成されます。
以下の例は、次の条件に合致するメッセージを取得します:
- 特定のドメインから受信
- 本日以前に受信
- 過去 7 日間に受信
ORでクエリを結合
2 つの条件のいずれかを満たすメッセージに一致させるには、Or() メソッドを使用します。
以下の例は、次の条件に合致するメッセージを取得します:
- 件名に “test” を含む、 または
- “noreply@host.com” から送信された
大文字小文字を区別したメールフィルタリング
Exchange メールボックスからメッセージをクエリする際に、大文字小文字を区別するフィルタリングまたは区別しないフィルタリングを適用できます。この動作を制御するには、フィルタリング メソッドで利用できる IgnoreCase フラグを使用します。true を渡すと大文字小文字を区別しないマッチングが有効になります。
以下の例は、次の条件に合致するメッセージをフィルタリングします:
- 件名に単語 "Newsletter" を(大文字小文字を区別せずに)含む
- 本日受信
メッセージフィルタリングにおけるページング
大規模な Exchange メールボックスを扱う際、ページングにより、メッセージを小さく管理しやすいバッチで取得できます。 ListMessagesByPage メソッド IEWSClient 指定したページサイズとクエリ条件に基づき、ページ単位で結果を返します。
以下の例は、方法を示しています:
- 以下を使用してフィルタを構築します MailQueryBuilder.
- ページ単位で結果を取得します。
- 最後のページまで全ページをループします。
- 一致するメッセージの総数をカウントします。