Gestione Asincrona delle Email con Client POP3

Operazioni asincrone con Pop3Client

Lavorare con i messaggi può anche essere eseguito in modo asincrono usando Aspose.Email Pop3Client. Questo articolo mostra come recuperare i messaggi da una casella in modo asincrono. Mostra anche come elencare i messaggi fornendo criteri di ricerca usando MailQuery. Verrà mostrato separatamente come interrompere un’operazione con una casella di posta avviata da un modello asincrono basato su task (TAP) metodo.

Recupera Messaggi in Modo Asincrono

Il seguente frammento di codice mostra come recuperare i messaggi in modo asincrono.

Elenca i messaggi in modo asincrono con MailQuery

Il MailQuery la classe può essere usata per specificare criteri di ricerca per recuperare una lista di messaggi in modo asincrono, come mostrato nel seguente esempio di codice.

Interruzione di un metodo TAP

A partire da .NET Framework 4.5, è possibile utilizzare metodi asincroni implementati secondo il modello TAP. Lo snippet di codice seguente mostra come ricevere informazioni su una casella di posta utilizzando il metodo basato sul modello asincrono denominato GetMailboxInfoAsync e poi interrompere questo processo dopo un po'.

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