Manipulação Assíncrona de Email com Cliente POP3
Operações Assíncronas com Pop3Client
Trabalhar com mensagens também pode ser feito de forma assíncrona usando o Aspose.Email Pop3Client. Este artigo mostra como recuperar mensagens de uma caixa de correio de forma assíncrona. Também mostra como listar mensagens fornecendo critérios de busca usando MailQuery. Será mostrado separadamente como interromper uma operação com uma caixa de correio iniciada por um padrão assíncrono baseado em tarefas (TAP) método.
Recuperar Mensagens de forma Assíncrona
O trecho de código a seguir mostra como recuperar mensagens de forma assíncrona.
Listar Mensagens Assincronamente com MailQuery
O MailQuery classe pode ser usada para especificar critérios de busca para recuperar uma lista de mensagens de forma assíncrona, como mostrado no exemplo de código a seguir.
Interrompendo um Método TAP
A partir do .NET Framework 4.5, você pode usar métodos assíncronos implementados de acordo com o modelo TAP. O trecho de código abaixo mostra como receber informações sobre uma caixa de correio usando o método baseado em tarefas assíncronas chamado GetMailboxInfoAsync e então interromper este processo depois de um tempo.
// 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);
}