IMAP サーバーからメールを取得および一覧表示する

メッセージの取得と一覧表示

メールボックス内メッセージの識別情報取得方法

メールメッセージを取得・処理する際、最新バージョンの Aspose.Email for .NET が提供する以下の機能を使用して、シーケンス番号や一意 ID などの詳細な識別情報を取得できます。

Aspose.Email.ImapMessageInfo クラス: IMAP メールボックス内のメッセージに関する識別情報を表します。

ImapMessageInfo.SequenceNumber プロパティ: メッセージのシーケンス番号を取得します。

ImapMessageInfo.UniqueId プロパティ: メッセージの一意識別子を取得します。

Aspose.Email.MailMessage.ItemId プロパティ: メールボックス内のメッセージに関する追加の識別情報を表します。

以下のコードスニペットは、IMAP メールボックス内のメッセージの識別情報を取得する方法を示しています。

  1. インスタンスを作成します ImapClient IMAP サーバーのホスト、ポート、メールアドレス、パスワード、セキュリティオプションなどの必要なパラメータを指定してインスタンス化するクラスです。
  2. 使用する ListMessages "INBOX" フォルダーからメッセージのリストを取得するメソッドです。Take(5) メソッドを使用して最初の 5 件に制限します。
  3. 以下を使用して一覧メッセージのシーケンス番号を抽出する SequenceNumber 各メッセージのプロパティ。
  4. 使用する FetchMessages 前段で取得したシーケンス番号を使用して、サーバーからメッセージの詳細情報を取得するメソッド。
  5. 取得したメッセージをループし、各メッセージについて以下の情報を取得して表示します。
  • メッセージのシーケンス番号。
  • ItemId.SequenceNumber プロパティ。
  • メッセージの件名。
using (var client = new ImapClient(imapHost, port, emailAddress, password, securityOption))
{
    // List the first 5 messages from the inbox
    var msgs = client.ListMessages("INBOX").Take(5);
    
    // Get sequence numbers of the messages
    var seqIds = msgs.Select(t => t.SequenceNumber);
    
    // Fetch messages based on sequence numbers
    var msgsViaFetch = client.FetchMessages(seqIds);
    
    for (var i = 0; i < 5; i++)
    {
        var thisMsg = msgsViaFetch[i];
        Console.WriteLine($"Message ID: {seqIds.ElementAt(i)} SequenceNumber: {thisMsg.ItemId.SequenceNumber} Subject: {thisMsg.Subject}");
    }
}

サーバーから MIME メッセージ ID を一覧表示

IMAPメッセージ情報 MIME を提供します MessageId 完全なメッセージを抽出せずにメッセージを識別するために使用します。以下のコードスニペットは、MIME messageId を一覧表示する方法を示します。

サーバーからメッセージを一覧表示

Aspose.Email は、2つのメンバーを持つオーバーロードバリアントを提供します。 ListMessages() クエリに基づいて指定した数のメッセージを取得します。以下のコードスニペットは、メッセージを一覧表示する方法を示しています。

メッセージを再帰的に一覧表示

IMAP プロトコルは、メールボックスフォルダーからメッセージを再帰的に一覧表示することをサポートしています。これにより、フォルダーのサブフォルダーからもメッセージを一覧表示できます。以下のコードスニペットは、メッセージを再帰的に一覧表示する方法を示します。

マルチ接続でメッセージを一覧表示

ImapClient を提供します UseMultiConnection 負荷の高い操作のために複数の接続を作成できるプロパティです。また、マルチコネクションモード中に使用する接続数は次を使用して設定できます ImapClient.ConnectionsQuantity。以下のコードスニペットは、メッセージ一覧取得のためのマルチ接続モードの使用例を示し、単一接続モードとのパフォーマンスを比較します。

ページングサポートでメッセージを一覧表示

メールサーバーのメールボックスに大量のメッセージがあるシナリオでは、ページング機能を用いてメッセージを一覧表示または取得したいことがよくあります。Aspose.Email API の ImapClient ページング対応でサーバーからメッセージを取得できます。

メッセージの添付ファイルを一覧表示

添付ファイルの名前やサイズなどの情報を、添付データを取得せずに取得するには、以下の API を試してください:

  • Aspose.Email.Clients.Imap.ImapAttachmentInfo - 添付ファイル情報を表します。
  • Aspose.Email.Clients.Imap.ImapAttachmentInfoCollection - のコレクションを表します。 ImapAttachmentInfo クラス。
  • Aspose.Email.Clients.Imap.ListAttachments(int sequenceNumber) - メッセージ内の各添付ファイルの情報を取得します。

以下の手順を含むコードサンプルは、API の使用方法を示します。

  1. 呼び出す ListMessages() imapClient オブジェクトのメソッドです。このメソッドは、メールボックス内のメッセージ情報を含む ImapMessageInfoCollection を返します。
  2. foreach ループを使用して messageInfoCollection の各メッセージを反復処理します。
  3. 呼び出す ListAttachments() imapClient オブジェクトのメソッドで、message オブジェクトの SequenceNumber プロパティをパラメータとして渡します。このメソッドは、メッセージ内の添付ファイル情報を含む ImapAttachmentInfoCollection を返します。
  4. foreach ループを使用して attachmentInfoCollection の各添付ファイルを反復処理します。
  5. 内部ループ内では、attachmentInfo オブジェクトのプロパティを使用して各添付ファイルの情報にアクセスできます。
var messageInfoCollection = imapClient.ListMessages();
    
foreach (var message in messageInfoCollection)
{
    var attachmentInfoCollection = imapClient.ListAttachments(message.SequenceNumber);

    foreach (var attachmentInfo in attachmentInfoCollection)
    {
        Console.WriteLine("Attachment: {0} (size: {1})", attachmentInfo.Name, attachmentInfo.Size);
    }
}

メッセージの取得と保存

サーバーからメッセージを取得

この ImapClient クラスは IMAP サーバーからメッセージを取得し、EML 形式でローカルディスクに保存できます。メッセージをディスクに保存するには、次の手順が必要です:

  1. インスタンスを作成します ImapClient クラス。
  2. ImapClient でホスト名、ポート、ユーザー名、パスワードを指定します コンストラクタ.
  3. 次を使用してフォルダーを選択します SelectFolder() メソッド。
  4. 呼び出す ListMessages メソッドで取得する IMAPメッセージ情報コレクション オブジェクト。
  5. 次を反復処理します IMAPメッセージ情報コレクション コレクションで、次を呼び出します SaveMessage() メソッドに出力パスとファイル名を指定します。

以下のコードスニペットは、サーバーからメールメッセージを取得して保存する方法を示しています。

降順でメッセージを取得

Aspose.Email は提供します: ImapClient.ListMessagesByPage ページングサポートでメッセージを一覧表示するメソッドです。いくつかのオーバーロードは ImapClient.ListMessagesByPage 受け入れる PageSettings パラメーターとして。 PageSettings 提供します AscendingSorting false に設定すると、メールを降順で返すプロパティです。

以下の例のコードは、次の使用方法を示しています AscendingSorting プロパティ( PageSettings メールの順序を変更するクラス。

MSG形式でメッセージを保存

メールを MSG 形式で保存するには、 ImapClient.FetchMessage() メソッドを呼び出す必要があります。メッセージは次のインスタンスで返されます MailMessage クラス。 MailMessage.Save() メソッドを呼び出してメッセージを MSG 形式で保存できます。以下のコードスニペットは、MSG 形式でメッセージを保存する方法を示しています。

取得したメッセージをグループ化

ImapClient を提供します FetchMessages シーケンス番号またはユニークIDのイテラブルを受け取り、… のリストを返すメソッドです MailMessage。以下のコードスニペットは、… の使用例を示しています FetchMessages シーケンス番号とユニークIDでメッセージを取得するメソッドです。

フォルダーを取得し、メッセージを再帰的に読む

この記事では、主に ImapClient この機能は、IMAP サーバーからすべてのフォルダーとサブフォルダーを再帰的に一覧表示するアプリケーションを作成するために使用されます。また、各フォルダーおよびサブフォルダー内のメッセージをローカルディスクに MSG 形式で保存します。ディスク上では、フォルダーとメッセージが IMAP サーバーと同じ階層構造で作成および保存されます。以下のコードスニペットは、メッセージとサブフォルダー情報を再帰的に取得する方法を示しています。

特別なメッセージ情報の処理

追加パラメータを要約情報として取得

List-Unsubscribe ヘッダー情報を取得

List-Unsubscribe ヘッダーには、広告やニュースレターなどのメールリストからの購読解除用 URL が含まれています。List-Unsubscribe ヘッダーを取得するには、次を使用してください。 ListUnsubscribe プロパティ( IMAPメッセージ情報 クラス。以下の例は、次の使用方法を示しています。 ListUnsubscribe List-Unsubscribe ヘッダーを取得するプロパティ。