IMAP メールフィルタリング - 方法、基準とコード例
基本的なメッセージフィルタリング
この ImapClient class は以下を提供します ListMessages() メールボックスからすべてのメッセージを取得するメソッドです。条件に合致するメッセージだけを取得するには、オーバーロードされた ListMessages() を受け取るメソッド MailQuery を引数として。 MailQuery クラスは、日付、件名、送信者、受信者など、条件を指定するためのさまざまなプロパティを提供します。最初の例は、日付と件名に基づいてメッセージをフィルタリングする方法を示します。また、他の条件でフィルタリングする方法や、より複雑なクエリを構築する方法も示します。API は、正確なフィルタリング条件に一致させるためのケースセンシティブ検索基準を適用する機能も提供します。さらに、メールボックスからメッセージをフィルタリングする際の検索文字列のエンコーディングを指定することもできます。
メールボックスからメッセージをフィルタリング
- IMAP サーバーに接続し、ログインする
- インスタンスを作成します MailQuery そしてプロパティを設定します
- 呼び出す ImapClient.ListMessages(MailQuery query) メソッドに渡す MailQuery パラメータを使用して、フィルタリングされたメッセージのみを取得します。
以下のコードスニペットは、IMAP メールボックスに接続し、本日到着し件名に "newsletter" が含まれるメッセージを取得する方法を示します。
特定の条件でメッセージをフィルタリング
上記のコードサンプル メールの件名と日付に基づいてメッセージをフィルタリングします。他のプロパティを使用して、サポートされている他の条件も設定できます。以下は、… を使用して条件を設定する例です。 MailQuery。以下のコードスニペットは、次の条件でメールをフィルタリングする方法を示します。
- 本日の日付。
- 日付範囲。
- 特定の送信者から。
- 特定のドメインから。
- 特定の受信者から。
本日
以下のコードスニペットは、本日の日付でメールをフィルタリングする方法を示します。
日付範囲
以下のコードスニペットは、日付範囲でメールをフィルタリングする方法を示しています。
特定の送信者
以下のコードスニペットは、特定の送信者でメールをフィルタリングする方法を示します。
特定のドメイン
以下のコードスニペットは、特定のドメインでメールをフィルタリングする方法を示します。
特定の受信者
以下のコードスニペットは、特定の受信者でメールをフィルタリングする方法を示します。
高度なクエリ構築
異なる場合 MailQueryBuilder プロパティを別々のステートメントで設定すると、すべての条件が一致します。たとえば、日付範囲内かつ特定のホストからのメッセージを取得したい場合、3 つのステートメントを書く必要があります。
ANDでクエリを結合
以下のコードスニペットは、AND を使用してクエリを組み合わせる方法を示しています。
ORでクエリを結合
MailQueryBuilder 提供します Or() 2つを受け取るメソッド MailQuery インスタンスをパラメータとして使用します。指定された2つの条件のいずれかに一致するメッセージを取得します。以下のコードスニペットは、件名に “test” が含まれるか、送信者が “noreply@host.com” のメッセージをフィルタリングする方法を示します。また、OR を使用してクエリを組み合わせる方法も示しています。
InternalDate に基づくフィルタリング
メッセージは InternalDate に基づいてサーバーから抽出できますが、サーバーが受信トレイに表示される全てのメッセージを返さないことがあります。その理由はサーバーのタイムゾーンで、すべてのサーバーが UTC ではないためです。例えば Gmail。Aspose は、RFC に従って 008 SEARCH ON 4-May-2014 のようなコマンドを送信します。 IMAP プロトコル ただし、結果はサーバーのタイムゾーン設定により異なる場合があります。新しいメンバーが追加されました。 IMAPメッセージ情報 として InternalDate これによりメッセージのフィルタリングがさらに容易になります。以下のコードスニペットは、使用例を示します。 InternalDate メッセージをフィルタリングするために。
大文字小文字を区別したフィルタリング
以下のコードスニペットは、ケースセンシティブなメールフィルタリングの使用方法を示します。
クエリビルダーのエンコーディングを指定
API の IMAPクエリビルダー コンストラクタは検索文字列のエンコーディングを指定するために使用できます。これは以下を使用して設定することもできます。 DefaultEncoding MailQueryBuilder のプロパティです。以下のコードスニペットは、クエリビルダーのエンコーディングを指定する方法を示します。
カスタムフィルタリングオプション
カスタムフラグでメッセージをフィルタリング
フィルタリングのためのカスタム検索
たとえば、RFC 3501 標準ではメッセージ内の添付ファイルの有無に基づく検索は許可されていません。しかし Gmail は提供しています。 IMAP 拡張機能 このような検索を実行できるものです。次のコードスニペットは、対応するクエリの作成方法を示しています。
ImapQueryBuilder queryBuilder = new ImapQueryBuilder();
queryBuilder.CustomSearch("X-GM-RAW \"has:attachment\"");
MailQuery mailQuery = queryBuilder.GetQuery();
ImapMessageInfoCollection messageInfoCollection = imapClient.ListMessages(mailQuery);
ページングサポート付きメッセージのフィルタリング
この ImapClient メールボックスからメッセージを検索し、ページングサポート付きで一覧表示する機能を提供します。以下のコードスニペットは、ページングサポート付きでメッセージをフィルタリングする方法を示します。