Asynchrone E‑Mail‑Verarbeitung mit POP3‑Client

Asynchrone Vorgänge mit Pop3Client

Die Arbeit mit Nachrichten kann ebenfalls asynchron mit Aspose.Email durchgeführt werden Pop3Client. Dieser Artikel zeigt, wie man Nachrichten aus einem Postfach asynchron abruft. Er zeigt auch, wie man Nachrichten auflistet, indem man Suchkriterien verwendet mit MailQuery. Es wird separat gezeigt, wie man eine Operation mit einem Postfach, die durch ein task‑basiertes asynchrones Muster gestartet wurde, unterbricht (TAP)‑Methode.

Nachrichten asynchron abrufen

Das folgende Code‑Snippet zeigt, wie man Nachrichten asynchron abruft.

Nachrichten asynchron mit MailQuery auflisten

Die MailQuery Klasse kann verwendet werden, um Suchkriterien für das asynchrone Abrufen einer Nachrichtenliste festzulegen, wie im folgenden Code‑Beispiel gezeigt.

Unterbrechen einer TAP‑Methode

Ab .NET Framework 4.5 können Sie asynchrone Methoden nach dem TAP‑Modell verwenden. Das folgende Code‑Snippet zeigt, wie man Informationen zu einem Postfach über die taskbasierte asynchrone Muster‑Methode namens GetMailboxInfoAsync und dann unterbrechen Sie diesen Vorgang nach einer Weile.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET

using (Pop3Client client = new Pop3Client(host, 995, senderEmail, password, SecurityOptions.Auto))
{
    CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
    AutoResetEvent autoResetEvent = new AutoResetEvent(false);
    Exception exception = null;

    ThreadPool.QueueUserWorkItem(delegate
    {
        try
        {
            // start receiving mailbox information
            var task = client.GetMailboxInfoAsync(cancellationTokenSource.Token);
            Pop3MailboxInfo mailboxInfo = task.GetAwaiter().GetResult();
            Console.WriteLine("Message count: " + mailboxInfo.MessageCount);
        }
        catch (Exception e)
        {
            exception = e;
        }
        finally
        {
            autoResetEvent.Set();
        }
    });

    Thread.Sleep(2000);

    // stop receiving mailbox information
    cancellationTokenSource.Cancel();
    autoResetEvent.WaitOne();

    if (exception is OperationCanceledException)
        Console.WriteLine("Operation has been interrupted: " + exception.Message);
}