Microsoft Graph के साथ ईमेल संदेश और अटैचमेंट्स को प्रबंधित करें
Aspose.Email IGraphClient Microsoft Graph के माध्यम से ईमेल संदेशों और उनके संलग्नकों का प्रबंधन करने के लिए विस्तृत रेंज की विधियां प्रदान करता है।
उपलब्ध संचालन:
-
संदेशों की सूची
-
संदेशों को फ़िल्टर और पेज करें
-
संदेश की सामग्री प्राप्त करें
-
संदेश बनाएँ और भेजें (ड्राफ़्ट और EML सहित)
-
संदेशों को कॉपी और स्थानांतरित करें
-
संलग्नकों का प्रबंधन (बनाएँ, प्राप्त करें, हटाएँ, सूचीबद्ध करें)
- List messages
- Fetch message
- Create message
- भेजें message
- CopyMessage message
- Move message
- CreateAttachment
- FetchAttachment
- DeleteAttachment
- ListAttachments
संदेश सूचीबद्ध करें
फ़ोल्डर जैसे "Inbox" से संदेश प्राप्त करने के लिए, उपयोग करें ListMessages विधि।
- फ़ोल्डर की सूची प्राप्त करें client.ListFolders().
- प्रत्येक फ़ोल्डर के माध्यम से लूप करें।
- जाँचें कि फ़ोल्डर का डिस्प्ले नाम "Inbox" है या नहीं।
- यदि यही है, तो इनबॉक्स में संदेशों को उपयोग करके सूचीबद्ध करें client.ListMessages(folder.ItemId).
- इनबॉक्स में प्रत्येक संदेश पर लूप करें।
- कंसोल में प्रत्येक संदेश का विषय प्रिंट करें।
var folders = client.ListFolders();
foreach (var folder in folders)
{
if (folder.DisplayName.Equals("Inbox"))
{
// list messages in inbox
var inboxMessages = client.ListMessages(folder.ItemId);
foreach (var messageInfo in inboxMessages)
{
Console.WriteLine(messageInfo.Subject);
}
}
}
Microsoft Graph के साथ असिंक्रोनस रूप से संदेशों की सूची
नीचे दिया गया कोड उदाहरण दिखाता है कि कैसे Inbox फ़ोल्डर तक पहुंचें, एक पेज के ईमेल संदेश प्राप्त करें साथ में ListMessagesAsync, और उनके विषय प्रिंट करें:
var folders = await client.ListFoldersAsync();
foreach (var folder in folders)
{
Console.WriteLine(folder.DisplayName);
}
var folderId = folders.Find(x => x.DisplayName == "Inbox").ItemId;
var msgsPage = await client.ListMessagesAsync(folderId, new PageInfo(15) { PageOffset = 0 }, null);
var msgs = msgsPage.Items;
foreach (var msg in msgs)
{
Console.WriteLine(msg.Subject);
}
भेजे जाने की तिथि द्वारा संदेशों को फ़िल्टर करें
यह OrderBy लाइब्रेरी कलेक्शन का मेथड आपको भेजे जाने की तिथि के आधार पर विभिन्न सॉर्टिंग क्रम (आरोही और अवरोही) के साथ संदेशों को प्राप्त करने की सुविधा देता है। निम्नलिखित कोड उदाहरण दिखाता है कि संदेशों को उनके भेजे जाने की तिथि के अनुसार कैसे क्रमबद्ध किया जाए:
-
Graph क्लाइंट को इनिशियलाइज़ करें
- का एक इंस्टेंस बनाएं IGraphClient का उपयोग करके GraphClient.GetClient() प्रोवाइडर और TenantId के साथ।
-
क्वेरी बिल्डर बनाएं
- एक … को इनस्टैंसिएट करें GraphQueryBuilder ऑब्जेक्ट।
-
संदेशों को तारीख के अनुसार क्रमबद्ध करें:
-
अवरोही क्रम
- उपयोग करें
builder.SentDate.OrderBy(false)क्रम को घटते क्रम में सेट करने के लिए। - कॉल करें client.ListMessages() Inbox से 10 की सीमा के साथ संदेश प्राप्त करने के लिए, क्वेरी का उपयोग करके builder.GetQuery().
- प्राप्त संदेशों को messages वेरिएबल में स्टोर करें।
- उपयोग करें
-
आरोही क्रम
- कॉल करके क्रम को बढ़ते क्रम में सेट करें
builder.SentDate.OrderBy(true). - उपयोग करें client.ListMessages() फ़िर इनबॉक्स से संदेश प्राप्त करने के लिए, अब बढ़ते क्रम में।
- इन संदेशों को messages वेरिएबल में सहेजें।
- कॉल करके क्रम को बढ़ते क्रम में सेट करें
IGraphClient client = GraphClient.GetClient(provider, TenantId);
var builder = new GraphQueryBuilder();
// create orderby messages query 'DESC'
builder.SentDate.OrderBy(false);
var messagePageInfo = client.ListMessages(KnownFolders.Inbox, new PageInfo(10), builder.GetQuery());
var messages = messagePageInfo.Items;
builder.Clear();
// create orderby messages query 'ASC'
builder.SentDate.OrderBy(true);
messagePageInfo = client.ListMessages(KnownFolders.Inbox, new PageInfo(10), builder.GetQuery());
messages = messagePageInfo.Items;
पेजिंग और फ़िल्टरिंग के साथ संदेशों की सूची
बड़े मेलबॉक्स के साथ काम करते समय पेजिंग का उपयोग करें। नीचे दिया गया उदाहरण 10 की पेज में अनपढ़ संदेशों को प्राप्त करता है और प्रोसेसिंग के बाद उन्हें पढ़ा हुआ मार्क करता है:
- क्लाइंट को इनिशियलाइज़ करें।
- प्रति पेज प्रदर्शित होने वाले आइटम्स की संख्या सेट करें, उदाहरण के लिए, 10।
- केवल अनरीड संदेशों को प्राप्त करने के लिए फ़िल्टर बनाएं, जिसका उपयोग GraphQueryBuilder class। यह
builder.IsRead.Equals(false)अनपढ़ संदेशों को फ़िल्टर करने की शर्त सेट कर रहा है। - कॉल करें ListMessages क्लाइंट ऑब्जेक्ट पर मेथड, जिसमें फ़ोल्डर (Inbox) और प्रति पृष्ठ आइटम्स (PageInfo(itemsPerPage)) को पैरामीटर के रूप में निर्दिष्ट किया गया है। यह अनरीड संदेशों के फ़िल्टर को लागू करने के लिए क्वेरी ऑब्जेक्ट भी पास करता है। लौटाया गया PageInfo ऑब्जेक्ट (pageInfo) वर्तमान पृष्ठ के प्राप्त संदेशों को Items प्रॉपर्टी में रखता है।
- एक लूप बनाएं जो तब तक चलता रहे जब तक आखिरी पेज नहीं पहुँच जाता (pageInfo.LastPage false है)। प्राप्त संदेशों को मौजूदा संदेशों की सूची में जोड़ने के लिए उपयोग किया जाता है
messages.AddRange(pageInfo.Items).
// reading unread messages with paging
using var client = GraphClient.GetClient(tokenProvider, config.Tenant);
// paging option
var itemsPerPage = 10;
// create unread messages filter
GraphQueryBuilder builder = new GraphQueryBuilder();
builder.IsRead.Equals(false);
var query = builder.GetQuery();
// list messages
var pageInfo = client.ListMessages(KnownFolders.Inbox, new PageInfo(itemsPerPage), query);
var messages = pageInfo.Items;
while (!pageInfo.LastPage)
{
pageInfo = client.ListMessages(KnownFolders.Inbox, pageInfo.NextPage, query);
messages.AddRange(pageInfo.Items);
}
// set messages state as read
foreach (var message in messages)
{
client.SetRead(message.ItemId);
}
एक संदेश प्राप्त करें
किसी विशिष्ट संदेश की पूरी सामग्री प्राप्त करें। नीचे दिया गया कोड उदाहरण दिखाता है कि कैसे इनबॉक्स में नवीनतम संदेश को प्राप्त और प्रदर्शित किया जाए, ताकि वह डिस्प्ले या प्रोसेसिंग के लिए उपयोग हो सके:
- कॉल करें client.ListFolders() मेलबॉक्स में सभी उपलब्ध फ़ोल्डर को प्राप्त करने और उन्हें folders वेरियेबल में स्टोर करने के लिए।
- foreach लूप का उपयोग करके फ़ोल्डर्स संग्रह में प्रत्येक फ़ोल्डर पर इटरेट करें।
- लूप के अंदर, जाँचें कि फ़ोल्डर का डिस्प्ले नाम "Inbox" के बराबर है या नहीं।
- यदि फ़ोल्डर इनबॉक्स है, तो संदेशों को उपयोग करके प्राप्त करें client.ListMessages() फ़ोल्डर के ItemId के साथ।
- InboxMessages.Count > 0 है या नहीं जाँचकर यह देखें कि इनबॉक्स में कोई संदेश हैं।
- यदि संदेश हैं, तो पहले संदेश को उपयोग करके प्राप्त करें client.FetchMessage() पहले संदेश के ItemId के साथ।
- प्राप्त संदेश का HTML बॉडी आउटपुट करें।
var folders = client.ListFolders();
foreach (var folder in folders)
{
if (folder.DisplayName.Equals("Inbox"))
{
// list messages in inbox
var inboxMessages = client.ListMessages(folder.ItemId);
if (inboxMessages.Count > 0)
{
// fetch the first message in inbox
var msg = client.FetchMessage(inboxMessages[0].ItemId);
Console.WriteLine(msg.BodyHtml);
}
}
}
OData के साथ Microsoft Graph क्वेरीज़
Aspose.Email for .NET Microsoft Graph के लिए OData क्वेरी समर्थन प्रदान करता है। यह डेवलपर्स को फ़ोल्डर्स, संदेश, संपर्क, कैलेंडर आइटम आदि जैसे ग्राफ़ रिसोर्सेज़ पर काम करते समय उन्नत फ़िल्टरिंग, सॉर्टिंग, चयन, पेजिंग, और एक्सपेंशन लागू करने की अनुमति देता है। The Aspose.Email.Clients.Graph.ODataQueryBuilder क्लास को OData क्वेरी पैरामीटर्स को संरचित तरीके से बनाने के लिए बनाया गया है, बजाय मैन्युअल क्वेरी स्ट्रिंग्स बनाने के। इस तरह, आप केवल आवश्यक फ़ील्ड प्राप्त कर सकते हैं (Select) दक्षता के लिए, फिल्टरिंग का उपयोग करें (Filter) और सॉर्टिंग (OrderBy) डेटा को व्यवस्थित करने के लिए। आप पेजिनेशन को भी लागू कर सकते हैं (Top, Skip) को बड़े डेटासेट के लिए, संबंधित एंटिटीज़ को विस्तृत करें (Expand) को एक कॉल में, और उन्नत परिदृश्य के लिए काउंटिंग और फ़ुल-टेक्स्ट सर्च को सक्षम करें।
नीचे है सूची GraphClient ऐसे मेथड्स जो एक वैकल्पिक ODataQueryBuilder पैरामीटर:**
ListFoldersListMessagesListContactsListCalendarItemsListAttachmentsListCategoriesListOverridesListRulesListTaskListsListTasksListNotebooks
नीचे दिया गया कोड उदाहरण दिखाता है कि कैसे उपयोग किया जाए **ODataQueryBuilderफ़ोल्डर सूचीबद्ध करने और फ़िल्टर्ड, सॉर्टेड, और पेज्ड ईमेल संदेशों को मेलबॉक्स से प्राप्त करने के लिए
var accessParameters = Settings.User1;
var provider = new AzureConfidentialTokenProvider(
accessParameters.TenantId,
accessParameters.ClientId,
accessParameters.ClientSecret);
var client = GraphClient.GetClient(provider, accessParameters.TenantId);
client.Resource = Aspose.Email.Clients.Graph.ResourceType.Users;
client.ResourceId = accessParameters.Username;
client.EndPoint = "https://graph.microsoft.com";
// Example 1: List folders ordered by name
var builder = new ODataQueryBuilder { OrderBy = "name asc" };
var folders = client.ListFolders(builder);
foreach (var folder in folders)
{
Console.WriteLine(folder.DisplayName);
}
// Example 2: Retrieve filtered and paged messages from Inbox
var folderId = folders.Find(x => x.DisplayName == "Inbox").ItemId;
builder = new ODataQueryBuilder
{
Filter = "startswith(name,'A')",
OrderBy = "name asc",
Top = 10,
Skip = 5,
Select = new[] { "name", "age" },
Expand = new[] { "children", "parents" },
Count = true,
Search = "\"John Doe\"",
Format = "json"
};
var msgs = client.ListMessages(folderId, builder);
foreach (var msg in msgs)
{
Console.WriteLine(msg.Subject);
}
संदेश बनाएं
उपयोग करें CreateMessage विधि जिससे आप नया संदेश सीधे किसी विशेष फ़ोल्डर, जैसे इनबॉक्स में सहेज सकते हैं। नीचे दिया गया उदाहरण दिखाता है कि कैसे एक … बनाएं MapiMessage और इसे मेलबॉक्स में जोड़ें।
var msg = new MapiMessage(OutlookMessageFormat.Unicode)
{
Subject = "My message",
Body = "Hi, it is my message"
};
msg.Recipients.Add("sam@to.com", "Sam", MapiRecipientType.MAPI_TO);
// create message in inbox
client.CreateMessage(KnownFolders.Inbox, msg);
संदेश भेजें
यह भेजें की विधि IGraphClient एक … का उपयोग करके सीधे ईमेल संदेश भेजने की अनुमति देता है MapiMessage ऑब्जेक्ट। इस उदाहरण में, एक सरल संदेश बनाया गया, प्रेषक और प्राप्तकर्ता विवरण के साथ कॉन्फ़िगर किया गया, और फिर भेजा गया।
// prepare the message
var msg = new MapiMessage(OutlookMessageFormat.Unicode)
{
Subject = "My message",
Body = "Hi, it is my message"
};
msg.Recipients.Add("sam@to.com", "Sam", MapiRecipientType.MAPI_TO);
msg.SetProperty(KnownPropertyList.SenderName, "John");
msg.SetProperty(KnownPropertyList.SentRepresentingEmailAddress, "John@from.com");
// send message
client.Send(msg);
ड्राफ्ट संदेश भेजें
आप संदेश को ड्राफ्ट्स फ़ोल्डर में सहेज सकते हैं और बाद में इसे उपयोग करके भेज सकते हैं IGraphClient. यह तरीका आपको संदेश तैयार करने, भेजने से पहले उसकी समीक्षा या संशोधन करने, और फिर तैयार होने पर उसे भेजने की अनुमति देता है। नीचे दिया गया कोड उदाहरण दिखाता है कि कैसे एक ईमेल बनाएं, मेटाडेटा जोड़ें, उसे ड्राफ्ट के रूप में सहेजें, और फिर भेजें:
- एक बनाएं MapiMessage विषय, बॉडी, और प्राप्तकर्ताओं के साथ।
- संदेश प्रॉपर्टीज़ का उपयोग करके प्रेषक विवरण सेट करें।
- ड्राफ्ट्स फ़ोल्डर में संदेश सहेजने के लिए उपयोग करें CreateMessage.
- ड्राफ्ट को इसका ItemId पास करके भेजें Send() विधि।
// prepare the message
var msg = new MapiMessage(OutlookMessageFormat.Unicode)
{
Subject = "My message",
Body = "Hi, it is my message"
};
msg.Recipients.Add("sam@to.com", "Sam", MapiRecipientType.MAPI_TO);
msg.SetProperty(KnownPropertyList.SenderName, "John");
msg.SetProperty(KnownPropertyList.SentRepresentingEmailAddress, "John@from.com");
// add message to Draft folder
var draftMessage = client.CreateMessage(KnownFolders.Drafts, msg);
// send a draft message
client.Send(draftMessage.ItemId);
एक EML संदेश भेजें
उपयोग करें MailMessage क्लास EML-फ़ॉर्मेटेड संदेश बनाने और भेजने के लिए। नीचे दिया गया कोड उदाहरण दिखाता है कि Graph API का उपयोग करके ईमेल संदेश कैसे बनाएं और भेजें:
// prepare the message
var eml = new MailMessage
{
From = "from@domain.com",
To = "to1@domain.com, to2@domain.com",
Subject = "New message",
HtmlBody = "<html><body>This is the HTML body</body></html>"
};
// send the message
graphClient.Send(eml);
graphClient.Create(KnownFolders.Inbox, eml);
संदेशों की कॉपी बनाएं
किसी मौजूदा ईमेल संदेश की डुप्लिकेट बनाने के लिए, उपयोग करें CopyMessage विधि IGraphClient इंटरफ़ेस।
// copy message to Inbox folder
var copiedMsg = client.CopyMessage(KnownFolders.Inbox, msg.ItemId);
संदेशों को स्थानांतरित करें
किसी मौजूदा ईमेल संदेश को उसकी वर्तमान लोकेशन से नया फ़ोल्डर में ले जाने के लिए, उपयोग करें MoveMessage विधि IGraphClient इंटरफ़ेस।
// move message to Inbox folder
var movedMsg = client.MoveMessage(KnownFolders.Inbox, msg.ItemId);
अटैचमेंट प्रबंधित करें
यह IGraphClient Aspose.Email for .NET में आपको प्रोग्रामेटिक रूप से ईमेल अटैचमेंट्स के साथ काम करने की अनुमति देता है। इसमें संदेश से जुड़े अटैचमेंट्स को बनाना, प्राप्त करना, हटाना और सूचीबद्ध करना शामिल है। नीचे दिया गया कोड उदाहरण Aspose.Email का उपयोग करके Microsoft Graph API के माध्यम से Outlook संदेशों के लिए अटैचमेंट जीवनचक्रम प्रबंधन को दर्शाता है। आप आवश्यकता अनुसार अटैचमेंट सामग्री और मेटाडेटा को कस्टमाइज़ कर सकते हैं।
// create an attachment
var attachment = new MapiAttachment();
attachment.SetProperty(KnownPropertyList.DisplayName, "My Attachment");
attachment.SetProperty(KnownPropertyList.AttachDataBinary, new byte[1024]);
// add an attachment to message
var createdAttachment = client.CreateAttachment(messageInfo.ItemId, attachment);
// fetch a message attachment
var fetchedAttachment = client.FetchAttachment(createdAttachment.ItemId);
// delete a message attachment
client.DeleteAttachment(createdAttachment.ItemId);
// list the message attachments
var attachments = client.ListAttachments(messageInfo.ItemId);