OAuth प्रमाणीकरण और EWS क्लाइंट के साथ असिंक्रोनस ईमेल संचालन
OAuth टोकन प्राप्त करने के लिए Async मेथड
सिंक्रोनस मेथड्स के विपरीत, असिंक्रोनस मेथड्स नॉन-ब्लॉकिंग होते हैं और एक साथ कई अनुरोध करने की अनुमति देते हैं। असिंक्रोनस मेथड्स के नाम के अंत में Async postfix जुड़ा होता है।
नोट: Async मेथड्स .NET Core, .NET Framework 4.5 और बाद के संस्करणों में उपलब्ध हैं।
निम्नलिखित कोड उदाहरण एक … को परिभाषित करता है SomeAsyncTokenProvider क्लास, जो … को इम्प्लीमेंट करती है IAsyncTokenProvider इंटरफ़ेस। यह क्लास इम्प्लीमेंट करता है GetAccessTokenAsync एक असिंक्रोनस मेथड जो OAuthToken प्रकार का Task लौटाता है। यह मेथड एक वैध … प्राप्त करता है OAuthToken असिंक्रोनस रूप से।
private class SomeAsyncTokenProvider : IAsyncTokenProvider
{
public SomeAsyncTokenProvider( /*some parameters*/)
{
...
}
public async Task<OAuthToken> GetAccessTokenAsync(bool ignoreExistingToken = false,
CancellationToken cancellationToken = default)
{
//Some asynchronous code to get a valid OAuthToken
...
}
public void Dispose()
{
...
}
}
OAuth प्रमाणीकरण के साथ असिंक्रोनस EWS क्लाइंट सेटअप
अगला कोड उदाहरण OAuth प्रमाणीकरण का उपयोग करके असिंक्रोनस रूप से एक्सचेंज वेब सर्विसेज (EWS) क्लाइंट प्राप्त करता है। कोड निम्नलिखित चरणों को निष्पादित करता है:
- एक नया बनाता है CancellationToken ऑब्जेक्ट जिसे असिंक्रोनस ऑपरेशन्स को रद्द करने के लिए उपयोग किया जा सकता है।
- इनस्टैंसिएट करता है
SomeAsyncTokenProviderक्लास जो लागू करती है IAsyncTokenProvider इंटरफ़ेस। इस क्लास का उपयोग एक नया … बनाते समय पैरामीटर के रूप में किया जाता है OAuthNetworkCredential ऑब्जेक्ट। - मेलबॉक्स URI को एक्सचेंज वेब सर्विसेज एन्डपॉइंट पर सेट करता है।
- कॉल करता है GetEwsClientAsync विधि EWSClient class जिसमें
mailboxUriऔरOAuthNetworkCredentialपैरामीटर के रूप में object। यह मेथड एक Task ऑब्जेक्ट रिटर्न करता है, इसलिए यह आगे बढ़ने से पहले परिणाम की प्रतीक्षा करता है। यहcancellationTokenऑब्जेक्ट को वैकल्पिक पैरामीटर के रूप में पास किया जाता है GetEwsClientAsync विधि।
//The cancellationToken can be used
var cancellationToken = new CancellationToken();
//Create IAsyncEwsClientInstance
IAsyncTokenProvider tokenProvider = new SomeAsyncTokenProvider(/*some parameters*/);
const string mailboxUri = "https://outlook.office365.com/ews/exchange.asmx";
var ewsClient = await EWSClient.GetEwsClientAsync(mailboxUri, new OAuthNetworkCredential(tokenProvider),
cancellationToken: cancellationToken);
ईमेल संदेश भेजें
निम्नलिखित कोड उदाहरण असिंक्रोनस रूप से एक ईमेल संदेश भेजने का प्रयास कर रहा है। कोड निम्नलिखित चरणों को निष्पादित करता है:
- एक नया बनाता है MailMessage ऑब्जेक्ट संदेश पैरामीटरों के साथ।
- कॉल करता है SendAsync विधि EWSClient ऑब्जेक्ट, जिसमें MailMessage को पैरामीटर के रूप में पास किया गया है। विधि को await किया जाता है क्योंकि यह एक Task ऑब्जेक्ट लौटाती है। The
cancellationTokenऑब्जेक्ट को वैकल्पिक पैरामीटर के रूप में पास किया जाता है SendAsync विधि।
MailMessage message = new MailMessage("from@aspose.com", "to@aspose.com", "Some subject", "Some body");
await ewsClient.SendAsync(message, cancellationToken: cancellationToken);
ईमेल संदेश प्राप्त करें
असिंक्रोनस रूप से ईमेल संदेश प्राप्त करने के लिए, नीचे दिया गया कोड उदाहरण और नीचे वर्णित चरणों का उपयोग करें:
-
कॉल करें FetchItemAsync EWSclient की विधि। विधि दो पैरामीटर लेती है:
messageUriएक स्ट्रिंग है जो प्राप्त करने वाले संदेश के URI को दर्शाती हैcancellationTokenएक वैकल्पिक पैरामीटर है जिसे असिंक्रोनस ऑपरेशन को रद्द करने के लिए उपयोग किया जा सकता है। विधि एक Task ऑब्जेक्ट लौटाती है जो एक MapiMessage ऑब्जेक्ट जब असिंक्रोनस ऑपरेशन पूरा हो जाए। "await" कीवर्ड का उपयोग Task ऑब्जेक्ट के पूर्ण होने तक इंतजार करने के लिए किया जाता है।
-
को असाइन करें
fetchedचर को पूर्ण हुए टास्क के परिणाम के रूप में असाइन किया जाता है, जो एक MapiMessage ऑब्जेक्ट जिसमें प्राप्त किए गए संदेश डेटा होते हैं।var fetched = await ewsClient.FetchItemAsync(messageUri, cancellationToken: cancellationToken);
ईमेल संदेश जोड़ें
नीचे दिया गया कोड उदाहरण असिंक्रोनस रूप से ईमेल संदेशों को जोड़ने का प्रयास कर रहा है। कोड निम्नलिखित चरणों को निष्पादित करता है:
-
कॉल करता है AppendMessagesAsync एक की विधि EWSclient ऑब्जेक्ट। विधि एक लेती है EwsAppendMessage ऑब्जेक्ट जिसमें पैरामीटर होते हैं: जोड़ने के लिए संदेश, लक्ष्य फ़ोल्डर URI, और कैंसलेशन टोकन।
-
बनाता है EwsAppendMessage ऑब्जेक्ट को उपयोग करके Create विधि और इसे निम्नलिखित विधि कॉल्स के साथ कॉन्फ़िगर करता है:
- AddMessage ऐपेंड ऑपरेशन में एक संदेश जोड़ता है।
- SetFolder ऐपेंड ऑपरेशन के लिए लक्ष्य फ़ोल्डर URI सेट करता है।
- SetCancellationToken एक कैंसलेशन टोकन सेट करता है जिसका उपयोग असिंक्रोनस ऑपरेशन को रद्द करने के लिए किया जा सकता है।
-
यह AppendMessagesAsync विधि एक Task ऑब्जेक्ट लौटाती है जो असिंक्रोनस ऑपरेशन के समाप्त होने पर एक IEnumerable
ऑब्जेक्ट प्रदान करता है। "await" कीवर्ड का उपयोग Task ऑब्जेक्ट के पूर्ण होने तक इंतजार करने के लिए किया जाता है। -
यह
urisचर को पूर्ण हुए टास्क के परिणाम के रूप में असाइन किया जाता है, जो एक IEnumerableऑब्जेक्ट है जिसमें जोड़े गए संदेशों के URI होते हैं।
IEnumerable<string> uris = await ewsClient.AppendMessagesAsync(
EwsAppendMessage.Create()
.AddMessage(message)
.AddMessage(fetched)
.SetFolder(folderUri)
.SetCancellationToken(cancellationToken));
आइटम कॉपी करें
नीचे दिया गया कोड नमूना दिखाता है कि आइटम कैसे कॉपी करें और निम्नलिखित चरणों को निष्पादित करता है:
-
कॉल करता है CopyItemAsync एक की विधि EWSClient ऑब्जेक्ट। विधि तीन पैरामीटर लेती है:
messageUriएक स्ट्रिंग है जो कॉपी किए जाने वाले संदेश के URI को दर्शाती हैdestinationFolderUriएक स्ट्रिंग है जो गंतव्य फ़ोल्डर के URI को दर्शाती हैcancellationTokenएक वैकल्पिक पैरामीटर है जिसे असिंक्रोनस ऑपरेशन को रद्द करने के लिए उपयोग किया जा सकता है।
विधि एक Task ऑब्जेक्ट लौटाती है जो असिंक्रोनस ऑपरेशन के समाप्त होने पर एक स्ट्रिंग प्रदान करता है। "await" कीवर्ड का उपयोग Task ऑब्जेक्ट के पूर्ण होने तक इंतजार करने के लिए किया जाता है।
-
newItemUriचर को पूर्ण हुए टास्क के परिणाम के रूप में असाइन किया जाता है, जो संदेश की नई बनाई गई कॉपी के URI वाली स्ट्रिंग है।
string newItemUri = await ewsClient.CopyItemAsync(messageUri, destinationFolderUri, cancellationToken);
वस्तुओं को हटाएँ
निम्नलिखित कोड असिंक्रोनस रूप से ईमेल संदेश को हटाने का प्रयास कर रहा है।
यह कॉल करता है DeleteItemAsync EWSClient ऑब्जेक्ट की विधि। यह विधि तीन पैरामीटर लेती है:
newItemUriएक स्ट्रिंग है जो हटाए जाने वाले आइटम के URI को दर्शाती हैDeletionOptions.DeletePermanentlyनिर्दिष्ट करता है कि आइटम को स्थायी रूप से हटाया जाना चाहिएcancellationTokenएक वैकल्पिक पैरामीटर है जिसे असिंक्रोनस ऑपरेशन को रद्द करने के लिए उपयोग किया जा सकता है।
विधि एक Task ऑब्जेक्ट लौटाती है जो असिंक्रोनस ऑपरेशन के समाप्त होने पर पूर्ण होता है। "await" कीवर्ड का उपयोग Task ऑब्जेक्ट के पूर्ण होने तक इंतजार करने के लिए किया जाता है।
await ewsClient.DeleteItemAsync(newItemUri, DeletionOptions.DeletePermanently, cancellationToken);
फ़ोल्डर हटाएँ
निम्नलिखित कोड असिंक्रोनस रूप से फ़ोल्डर को हटाने का प्रयास कर रहा है।
यह कॉल करता है DeleteFolderAsync EWSClient ऑब्जेक्ट की विधि। यह विधि तीन पैरामीटर लेती है:
folderUriएक स्ट्रिंग है जो हटाए जाने वाले फ़ोल्डर के URI को दर्शाती हैdeletePermanentlyनिर्दिष्ट करता है कि फ़ोल्डर को स्थायी रूप से हटाया जाए या "Deleted Items" फ़ोल्डर में स्थानांतरित किया जाएcancellationTokenएक वैकल्पिक पैरामीटर है जिसे असिंक्रोनस ऑपरेशन को रद्द करने के लिए उपयोग किया जा सकता है।
विधि एक Task ऑब्जेक्ट लौटाती है जो असिंक्रोनस ऑपरेशन के समाप्त होने पर पूर्ण होता है। "await" कीवर्ड का उपयोग Task ऑब्जेक्ट के पूर्ण होने तक इंतजार करने के लिए किया जाता है।
const bool deletePermanently = true;
await ewsClient.DeleteFolderAsync(folderUri, deletePermanently, cancellationToken);
आइटम अपडेट करें
निम्नलिखित कोड उदाहरण एक आइटम को असिंक्रोनस रूप से अपडेट करने का प्रयास कर रहा है। यह निम्नलिखित चरणों को निष्पादित करता है:
- एक बनाता है EwsUpdateItem ऑब्जेक्ट को उपयोग करके Create विधि, जिसमें एक आइटम ऑब्जेक्ट पास किया जाता है। EwsUpdateItem एक अपडेट ऑपरेशन पैरामीटर का प्रतिनिधित्व करता है। The SetCancellationToken विधि को … पर कॉल किया जाता है EwsUpdateItem ऑब्जेक्ट, जिसमें
cancellationTokenपैरामीटर, जो एक वैकल्पिक पैरामीटर है जिसे असिंक्रोनस ऑपरेशन को रद्द करने के लिए उपयोग किया जा सकता है। - पास करता है EwsUpdateItem ऑब्जेक्ट को पैरामीटर के रूप में UpdateItemAsync एक की विधि EWSClient.
- यह UpdateItemAsync विधि एक Task ऑब्जेक्ट लौटाती है जो असिंक्रोनस ऑपरेशन के समाप्त होने पर पूर्ण होता है। "await" कीवर्ड का उपयोग Task ऑब्जेक्ट के पूर्ण होने तक प्रतीक्षा करने के लिए किया जाता है।
await ewsClient.UpdateItemAsync(
EwsUpdateItem.Create(mapiNote)
.SetCancellationToken(cancellationToken));