POP3サーバーからメールを取得する

解析せずにメールをディスクに保存

POP3 サーバーからメールメッセージを解析せずにダウンロードするには、以下を使用できます: save_message Aspose.Email のメソッド Pop3Client クラス。以下のコードスニペットは、シーケンス番号(この例では 1)を使用してメッセージを保存する方法を示します。 save_message このメソッドは解析せずに元の EML 形式を保持します:

保存前にメッセージを解析

以下の方法で特定のメールメッセージを取得できます。 fetch_message メソッド( Pop3Client クラスで、クライアントオブジェクトの目的のシーケンス番号を指定します。以下のコードサンプルは、特定のメッセージを取得し、その件名をファイル名として保存する方法を示しています(save メソッドを呼び出します)。 save msg オブジェクト上のメソッド:

import aspose.email as ae

client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)

# Fetch the message by its sequence number and Save the message using its subject as the file name
msg = client.fetch_message(1)
msg.save("first-message_out.eml", ae.SaveOptions.default_eml)

条件でサーバーからメールをフィルタリング

Aspose.Email Pop3Client class は以下を提供します list_messages() メールボックスからすべてのメッセージを取得するメソッドです。条件に合致するメッセージだけを取得するには、オーバーロードされた list_messages(query) を受け取るメソッド MailQuery を引数として。 MailQuery クラスは日付、件名、送信者、受信者など、クエリ条件を指定するためのさまざまなプロパティを提供します。

検索式を構築するには、 MailQueryBuilder クラス。まず必要なすべての条件と制約を定義し、その後 MailQueryBuilder が作成したクエリで MailQuery オブジェクトに情報を設定します。 MailQueryBuilder. Pop3Client はこの MailQuery オブジェクトを使用してサーバーからフィルタされた情報を取得します。

以下のコードサンプルは、件名、内部日付、送信者、受信者などのさまざまな条件に基づいて Gmail アカウントからメールをフィルタリングおよび取得する方法を示しています。また、ケースセンシティブフィルタリングと、複雑なクエリを効率的に構築する方法も示しています。

  1. Gmail の POP3 サーバーへの接続を確立します。 Pop3Client 指定されたサーバーアドレス、ポート、ユーザー名、パスワードを持つクラスです。セキュリティオプションは安全な接続のために AUTO に設定されています。
  2. インスタンスを作成します MailQueryBuilder メールをフィルタリングする検索条件を構築するために使用します。
  3. 件名でフィルタリング:
    • 件名に "Newsletter" を含むメールがフィルタ条件として指定されています。
  4. 内部日付でフィルタリング:
    • 当日受信したメールを対象にしたフィルタが設定されています。
    • 過去 1 週間以内に受信したメールを取得するための追加フィルタが追加されています。
  5. 送信者でフィルタリング:
    • 特定のメールアドレス (saqib.razzaq@127.0.0.1) からのメールと、特定ドメイン (SpecificHost.com) からのメールを検索するフィルタが適用されています。
  6. 受信者でフィルタリング:
    • 特定の受信者に送信されたメールを検索するフィルタが指定されています。
  7. OR 演算子を使用してクエリを組み合わせ、指定された件名に一致するか、特定のアドレスから送信されたメールを検索します。
  8. ケースセンシティブフィルタリング
    • 件名に "Newsletter" を含むケースセンシティブフィルタが指定されています(True パラメータで示されます)。
  9. メッセージ一覧:
    • list_messages() メソッドは構築されたクエリと共に呼び出され、メールボックスからフィルタされたメッセージを取得します。
  10. 最後に、フィルタされたメッセージの数を出力します。

日付でメールをフィルタリング

配信日でメッセージを取得するには、次を使用します internal_date 以下のコードサンプルに示すようなプロパティ:

import aspose.email as ae
from datetime import datetime

builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())

日付範囲でメールをフィルタリング

日付範囲内のメッセージを取得するには、同じものを使用します internal_date 以下のコードサンプルに示すように、日付範囲を指定するプロパティ:

import aspose.email as ae
from datetime import datetime, timedelta

builder = ae.tools.search.MailQueryBuilder()
# Emails that arrived in last 7 days
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))

送信者でメールをフィルタリング

特定の送信者からメッセージを取得するには、次を使用します from_address 以下のコードサンプルに示すようなプロパティ:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")

ドメインでメールをフィルタリング

特定のドメインからメッセージを取得するには、次を使用します from_address 以下のコードサンプルに示すようなプロパティ:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")

受信者でメールをフィルタリング

特定の受信者へメッセージを取得するには、次を使用します to 以下のコードサンプルに示すようなプロパティ:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")

複雑な検索クエリを構築する

場合によっては、複数のクエリを満たす必要があります。Aspose.Email を使用すると、クエリを複数のステートメントで組み合わせることが可能です。作成する MailQueryBuilder オブジェクトとそのプロパティを使用して特定のクエリを構築します。

ANDでクエリを結合

以下のコードスニペットは、AND 演算子でクエリを組み合わせる方法を示します:

import aspose.email as ae
from datetime import datetime, timedelta

builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))
builder.from_address.contains("SpecificHost.com")

ORでクエリを結合

以下のコードスニペットは、OR 演算子でクエリを組み合わせる方法を示します:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.either(builder.subject.contains("test"), builder.from_address.contains("noreply@host.com"))

ケースセンシティブフィルタを適用

API はケースセンシティブな条件に基づいてメールボックスからメールをフィルタリングする機能も提供します。以下のメソッドは、 StringComparisonField クラスはケースセンシティブフラグを指定してメールを検索する機能を提供します:

メソッド Aspose.Email.StringComparisonField.contains(value, ignore_case) メソッド Aspose.Email.StringComparisonField.equals(value, ignore_case) メソッド Aspose.Email.StringComparisonField.not_contains(value, ignore_case) メソッド Aspose.Email.StringComparisonField.not_equals(value, ignore_case)

以下のコードスニペットは、この機能をプロジェクトに実装する方法を示します:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("noreply@host.com", True)