Asynchroniczna obsługa e‑maili przy użyciu klienta POP3

Asynchroniczne operacje z Pop3Client

Praca z wiadomościami może również być wykonywana asynchronicznie przy użyciu Aspose.Email Pop3Client. Ten artykuł pokazuje, jak asynchronicznie pobierać wiadomości z skrzynki pocztowej. Pokazuje także, jak wyświetlać wiadomości, podając kryteria wyszukiwania przy użyciu MailQuery. Zostanie przedstawione osobno, jak przerwać operację skrzynki pocztowej rozpoczętą w oparciu o wzorzec asynchroniczny oparty na zadaniach (TAP) metoda.

Pobieranie wiadomości asynchronicznie

Poniższy fragment kodu pokazuje, jak pobrać wiadomości asynchronicznie.

Listuj wiadomości asynchronicznie przy użyciu MailQuery

Ten MailQuery klasa może być użyta do określenia kryteriów wyszukiwania w celu asynchronicznego pobrania listy wiadomości, jak pokazano w poniższym przykładzie kodu.

Przerywanie metody TAP

Od .NET Framework 4.5 możesz używać metod asynchronicznych zaimplementowanych zgodnie z modelem TAP. Poniższy fragment kodu pokazuje, jak otrzymać informacje o skrzynce pocztowej przy użyciu metody opartej na wzorcu asynchronicznym zadania o nazwie GetMailboxInfoAsync a następnie przerwać ten proces po chwili.

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