Gestion asynchrone des e-mails avec le client POP3
Opérations asynchrones avec Pop3Client
Travailler avec les messages peut également être effectué de manière asynchrone en utilisant Aspose.Email Pop3Client. Cet article montre comment récupérer des messages d’une boîte aux lettres de façon asynchrone. Il montre également comment lister les messages en fournissant des critères de recherche à l’aide de MailQuery. Il sera montré séparément comment interrompre une opération avec une boîte aux lettres démarrée par un modèle asynchrone basé sur les tâches (TAP) méthode.
Récupérer des messages de manière asynchrone
Le fragment de code suivant vous montre comment récupérer les messages de manière asynchrone.
Lister les messages de façon asynchrone avec MailQuery
Le MailQuery la classe peut être utilisée pour spécifier les critères de recherche afin de récupérer une liste de messages de façon asynchrone, comme le montre l’exemple de code suivant.
Interruption d’une méthode TAP
À partir de .NET Framework 4.5, vous pouvez utiliser des méthodes asynchrones implémentées selon le modèle TAP. L’extrait de code ci‑dessous montre comment recevoir des informations sur une boîte aux lettres en utilisant la méthode basée sur le modèle asynchrone nommée GetMailboxInfoAsync et interrompre ensuite ce processus après un certain temps.
// 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);
}