IMAP サーバーからメールを取得および一覧表示
メールボックスからメッセージを一覧表示
クラスの ’list_messages’ メソッドは ImapClient クラスは現在選択されているフォルダー(この場合は "Inbox")からすべてのメッセージのリストを取得します。このリストには、メッセージ ID、シーケンス番号、UID、件名や送信者情報などのサマリーデータが含まれるメタデータオブジェクトが含まれます。
以下のコードスニペットは、受信トレイからメッセージのメタデータを取得し、含まれるメッセージ数を出力する方法を示しています。
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
client.select_folder("Inbox")
messages = client.list_messages()
print(f"Total Messages: {len(messages)}")
ページングサポートでメッセージを一覧表示
メールサーバーのメールボックスに大量のメッセージがあるシナリオでは、ページングサポートでメッセージを一覧または取得したいことがよくあります。Aspose.Email は ImapClient クラスは、ページングサポート付きでサーバーからメッセージを取得できます。
メッセージを再帰的に一覧表示
IMAP プロトコルは、メールボックスフォルダー内のメッセージを再帰的に一覧表示することを可能にします。サブフォルダーのメッセージも一覧可能です。以下のコードスニペットは、メッセージを再帰的に一覧表示する方法を示しています。
MIME メッセージ ID を一覧表示
この IMAPメッセージ情報 クラスは、メッセージ全体を抽出せずにメッセージを識別するための MIME MessageId への便利なアクセス方法を提供します。以下は MIME MessageId を一覧表示するコードスニペットです。
マルチ接続でメッセージを一覧表示
この ImapClient クラスは use_multi_connection プロパティを提供し、負荷の高い操作に複数接続を使用できるようにします。さらに、connections_quantity プロパティでマルチ接続モードの接続数を指定できます。以下のコードスニペットは、メッセージ一覧表示にマルチ接続モードを利用する方法を示しています。
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
client.select_folder("Inbox")
client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE
message_info_col = client.list_messages(True)
このモードを使用しても必ずしもパフォーマンスが向上するわけではないことに注意してください。
シーケンス番号またはユニーク ID でメッセージを取得
Aspose.Email API を使用すると、シーケンス番号のリストと受信トレイ内すべてのメッセージのユニーク ID のリストの二つを生成できます。識別子で IMAP サーバーからメッセージを取得するには、クラスの fetch_messages メソッドを使用してください。 ImapClient クラスです。以下のコードスニペットは、識別子でメッセージを一覧表示する方法を示しています。
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
# List messages
message_info_col = client.list_messages()
print("ListMessages Count:", message_info_col.count)
# Get sequence numbers and unique IDs
sequence_number_ar = [mi.sequence_number for mi in message_info_col]
unique_id_ar = [mi.unique_id for mi in message_info_col]
# Fetch messages by sequence number
fetched_messages_by_snum = client.fetch_messages(sequence_number_ar)
print("FetchMessages-sequenceNumberAr Count:", len(fetched_messages_by_snum))
# Fetch messages by UID
fetched_messages_by_uid = client.fetch_messages(unique_id_ar)
print("FetchMessages-uniqueIdAr Count:", len(fetched_messages_by_uid))
メッセージを降順で取得
このタスクは、メッセージ取得のページング設定を定義することで実現します。そのために、ascending_sorting プロパティを使用してください。 PageSettings クラスは IMAP クライアント モジュールの一部です。ascending_sorting 属性を設定してください。 PageSettings オブジェクトを False に設定します。これは取得時にデフォルトでメッセージが降順にソートされることを示します。以下のコードスニペットは、メッセージを降順で取得する方法を示しています。
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
page_settings = ae.clients.imap.PageSettings
page_settings.ascending_sorting = False
page_info = client.list_messages_by_page(5, page_settings)
messages = page_info.items
for message in messages:
print(message.subject)
サーバーからメッセージを取得しディスクに保存
この ImapClient クラスは IMAP サーバーからメッセージを取得し、EML 形式でローカルディスクに保存できます。メッセージをディスクに保存する手順は以下の通りです。
- 使用する ImapClient クラスは、IMAP サーバーに接続するために必要なパラメータ(host、port、username、password)を持ちます。
- select_folder メソッドを呼び出して目的のフォルダーを選択します(例: "Inbox")。
- list_messages メソッドを使用してメッセージを反復処理し取得します。
- メッセージを保存するには、各メッセージに対して save_message メソッドを使用し、ディレクトリを指定し、ファイル名にユニーク ID を付加してください。
以下のコードスニペットは、サーバーからメールメッセージを取得し保存する方法を示しています。
MSG形式でメッセージを保存
メールを MSG 形式で保存するには、クラスの fetch_message メソッドを呼び出します。 ImapClient クラスです。メッセージをインスタンスとして返します。 MailMessage クラスです。MailMessage.save() メソッドを呼び出してメッセージを MSG 形式で保存できます。以下のコードスニペットは、MSG 形式でメッセージを保存する方法を示しています。
追加メッセージパラメータ(サマリー情報)を取得
以下のコードスニペットは、Aspose.Email を使用してメールサーバーとやり取りする方法を示しています。 ImapClient メールメッセージを送信および操作するために、コードはメッセージ UID を使用して追加パラメータ("X-GM-MSGID"、"X-GM-THRID")でサマリー情報を取得します。シーケンス番号を使用しても同様の情報が取得できます。
List-Unsubscribe ヘッダーを取得
"ListUnsubscribe" ヘッダーは、メーリングリストや自動メールシステムから送信されるメールメッセージのヘッダーに一般的に含まれます。受信者はこのリンクまたはメールアドレスを使用して、メーリングリストや自動メールの購読を解除できます。Aspose.Email は、’list_unsubscribe’ プロパティを提供します。 IMAPメッセージ情報 このヘッダーを取得するクラスです。以下のコードスニペットはプロパティの使用例を示しており、不要なメールの購読解除プロセスを自動化するシステムの一部として使用できます。
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
message_info_col = client.list_messages()
# Iterate through each message
for imap_message_info in message_info_col:
print("ListUnsubscribe Header:", imap_message_info.list_unsubscribe)
メッセージ識別情報を取得
メールメッセージを取得・処理する際、シーケンス番号を使用してメッセージの詳細を取得できます。
以下の機能は、IMAP メールボックスとやり取りするために使用されます。
-
Aspose.Email.ImapMessageInfo クラス - メールボックス内のメッセージに関する識別情報を表します。
-
Aspose.Email.ImapMessageInfo.sequence_number プロパティ - メッセージのシーケンス番号。
-
Aspose.Email.ImapMessageInfo.unique_id プロパティ - メッセージの一意の ID。
以下のコードスニペットは、メッセージの識別情報を取得する方法を示しています。
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
msg_infos = client.list_messages("INBOX")
for msg_info in msg_infos:
# fetch by sequence number
msg = client.fetch_message(msg_info.sequence_number)
# fetch by unique id
msg = client.fetch_message(msg_info.unique_id)
IMAP メールメッセージから添付ファイルを一覧表示
添付ファイルの名前やサイズなどの情報を、データを取得せずに取得するには、以下のライブラリリソースを使用してください。
-
ImapAttachmentInfo クラス - 添付情報(サイズ、名前、メディアタイプ)を表します。
-
ImapAttachmentInfoCollection クラス - コレクションを表します。 ImapAttachmentInfo.
-
list_attachments(sequence_number) メソッド(クラス) ImapClient クラス - メッセージの添付情報のイテラブルまたはコレクションを取得します。
以下のコードサンプルは、Aspose.Email を使用して各メールメッセージの添付ファイルを一覧表示する方法を示しています。 ImapClient:
# List messages
message_info_col = client.list_messages()
# Iterate through each message
for message_info in message_info_col:
print(f"Attachments for message with sequence number {message_info.sequence_number}:")
# List attachments for the current message
attachment_info_col = client.list_attachments(message_info.sequence_number)
# Iterate through each attachment
for attachment_info in attachment_info_col:
print(f"Attachment: {attachment_info.name} (size: {attachment_info.size})")