טיפול אסינכרוני בדוא"ל עם לקוח POP3

פעולות אסינכרוניות עם Pop3Client

עבודה עם הודעות יכולה להתבצע גם אסינכרונית באמצעות Aspose.Email Pop3Client. מאמר זה מציג כיצד לשאוב הודעות מתיבת דואר בצורה אסינכרונית. הוא גם מציג כיצד לרשום הודעות על‑ידי אספקת קריטריוני חיפוש באמצעות MailQuery. יופיע בנפרד כיצד להפסיק פעולה עם תיבת דואר שהתחילה בתבנית אסינכרונית מבוססת משימה (TAP) שיטה.

איחזור הודעות באופן אסינכרוני

הקטע הקוד הבא מראה כיצד לאחזר הודעות באופן אסינכרוני.

רשימת הודעות בצורה אסינכרונית עם MailQuery

ה MailQuery ניתן להשתמש במחלקה כדי לציין קריטריוני חיפוש לשאיבת רשימת הודעות בצורה אסינכרונית כפי שמופיע בדוגמת הקוד שלהלן.

הפסקת שיטת TAP

החל מ-.NET Framework 4.5, ניתן להשתמש במתודות אסינכרוניות המיושמות בהתאם למודל TAP. קטע הקוד שלהלן מציג כיצד לקבל מידע על תיבת דואר באמצעות שיטה מבוססת משימה בשם GetMailboxInfoAsync ואז להפריע לתהליך זה אחרי זמן מה.

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