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