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);
}