Microsoft Graph के साथ मेलबॉक्स प्रबंधन

संदेशों, फ़ोल्डरों और अटैचमेंट्स के साथ काम करने के अलावा, Aspose.Email for Java आपको केटेगरीज, फोकस्ड इनबॉक्स ओवरराइड्स और नियमों जैसे मेलबॉक्स-स्तर की सुविधाओं को भी प्रबंधित करने की अनुमति देता है। आप रिसोर्स कंटेक्स्ट बदलकर कई मेलबॉक्स के साथ भी काम कर सकते हैं। ये ऑपरेशन्स Graph API इंटीग्रेशन के माध्यम से उपलब्ध हैं।

Outlook केटेगरीज के साथ कैसे काम करें

Outlook में केटेगरीज आपको संदेशों को समूहित और लेबल करने में मदद करती हैं। Aspose.Email के साथ, आप प्रोग्रामैटिक रूप से केटेगरीज बनाना, प्राप्त करना, अपडेट करना, सूचीबद्ध करना और डिलीट कर सकते हैं।

String categoryName = "Test Category";
int preset = CategoryPreset.Preset10;

// create a new category
OutlookCategory category = client.createCategory(categoryName, preset);

// fetch a category
OutlookCategory fetchedCategory = client.fetchCategory(category.getId());

// list categories
List<OutlookCategory> categories = client.listCategories();

// update a category
fetchedCategory.setDisplayName("Update Category");
fetchedCategory.setPreset(CategoryPreset.Preset11);
OutlookCategory updatedCategory = client.updateCategory(fetchedCategory);

// delete a category
client.delete(category.getId());

ओवरराइड्स के साथ कैसे काम करें

ओवरराइड्स नियंत्रित करते हैं कि विशिष्ट प्रेषकों के संदेश फोकस्ड इनबॉक्स में कैसे दिखाए जाएँ। उदाहरण के लिए, आप किसी विशेष प्रेषक के संदेशों को हमेशा फोकस्ड व्यू में दिखाने के लिए बाध्य कर सकते हैं।

int focusedType = ClassificationType.Focused;

// create or update an override for a sender
ClassificationOverride override = client.createOrUpdateOverride(
    new MailAddress("testUser@host.com", "testUser"), focusedType
);

// list overrides
List<ClassificationOverride> list = client.listOverrides();
for (ClassificationOverride item : list)
    System.out.println(item.getSender().getAddress());

// update override classification
ClassificationOverride fetchedOverride = list.get(0);
fetchedOverride.setClassifyAs(ClassificationType.Other);
fetchedOverride.getSender().setDisplayName("testUser_1");
ClassificationOverride updatedOverride = client.createOrUpdateOverride(fetchedOverride);

// reset classification
fetchedOverride.setClassifyAs(ClassificationType.Focused);
updatedOverride = client.updateOverride(fetchedOverride);

// delete override
client.delete(updatedOverride.getId());

Outlook नियमों के साथ कैसे काम करें

मेलबॉक्स नियम आपको फ़ॉरवर्डिंग या शर्तों के आधार पर फ़िल्टरिंग जैसी कार्रवाई को स्वचालित करने की अनुमति देते हैं। Graph API इनबॉक्स नियमों को बनाने, प्राप्त करने, अपडेट करने, सूचीबद्ध करने और डिलीट करने की सुविधा देता है।

// create a new rule
InboxRule rule = new InboxRule();
rule.setDisplayName("Test rule");
rule.setPriority(1);
rule.setEnabled(true);
rule.setConditions(new RulePredicates());
rule.getConditions().containsSenderStrings(new StringCollection());
rule.getConditions().containsSenderStrings().addItem("testUser");

// define actions
rule.setActions(new RuleActions());
rule.getActions().setForwardToRecipients(new MailAddressCollection());
rule.getActions().getForwardToRecipients()
    .addMailAddress(new MailAddress("testUser@host.com", "testUser", true));
rule.getActions().setStopProcessingRules(true);

InboxRule createdRule = client.createRule(rule);

// list rules
List<InboxRule> listedRules = client.listRules();
for (InboxRule item : listedRules)
    System.out.println(item.getDisplayName());

// fetch and update a rule
InboxRule fetchedRule = client.fetchRule(createdRule.getRuleId());
createdRule.setDisplayName("Test rule 1");
createdRule.setEnabled(false);
InboxRule updatedRule = client.updateRule(createdRule);

// delete rule
client.delete(createdRule.getRuleId());

एकाधिक मेलबॉक्स के साथ काम करना - मेलबॉक्स कंटेक्स्ट बदलना

डिफ़ॉल्ट रूप से, ऑपरेशन्स वर्तमान उपयोगकर्ता के मेलबॉक्स के खिलाफ किए जाते हैं। आप रिसोर्स प्रकार और रिसोर्स ID सेट करके कंटेक्स्ट को किसी अन्य मेलबॉक्स (उदाहरण के लिए, साझा मेलबॉक्स से संदेश सूचीबद्ध करने के लिए) में बदल सकते हैं।

// switch to another mailbox
client.setResource(ResourceType.Users);
client.setResourceId("mailbox");
client.listMessages("mailfolder");

// switch back to the current user mailbox
client.setResource(ResourceType.Me);

Microsoft Graph के साथ OData क्वेरीज

Aspose.Email for Java Microsoft Graph के साथ काम करते समय OData क्वेरीज के लिए समर्थन प्रदान करता है। यह फ़ोल्डर, संदेश, संपर्क और कैलेंडर आइटम जैसे संसाधनों को प्राप्त करते समय उन्नत फ़िल्टरिंग, सॉर्टिंग, चयन, पेजिनेशन और एक्सपैंशन करने की अनुमति देता है। ODataQueryBuilder क्लास आपको OData क्वेरी पैरामीटर्स को संरचित और पुन: उपयोगी तरीके से बनाने की सुविधा देती है, बजाय मैन्युअल स्ट्रिंग बनाने के। नीचे दिए गए मेथड्स बड़े डेटा सेट में गिनती और खोज के लिए लागू किए जा सकते हैं:

  • Select केवल आवश्यक प्रॉपर्टी प्राप्त करने के लिए।
  • Filter फ़िल्टर लागू करने के लिए।
  • OrderBy परिणामों को सॉर्ट करने के लिए।
  • Top और Skip पेजिनेशन के लिए।
  • Expand एक ही क्वेरी में संबंधित इकाइयों को विस्तारित करने के लिए।

कई GraphClient मेथड्स वैकल्पिक स्वीकार करते हैं ODataQueryBuilder OData क्वेरीज लागू करने के लिए पैरामीटर, जिसमें शामिल है:

  • listFolders
  • listMessages
  • listContacts
  • listCalendarItems
  • listAttachments
  • listCategories
  • listOverrides
  • listRules
  • listTaskLists
  • listTasks
  • listNotebooks

निम्न कोड उदाहरण दिखाता है कि कैसे उपयोग किया जाए ODataQueryBuilder फ़ोल्डरों को क्वेरी करने और उन्नत फ़िल्टर तथा पेजिनेशन के साथ संदेश प्राप्त करने के लिए:

IGraphClient client = GraphClient.GetClient();

client.setResource(ResourceType.Users);
client.setResourceId(username);
client.setEndpoint("https://graph.microsoft.com");

// Example 1: List folders ordered by name
ODataQueryBuilder builder = new ODataQueryBuilder();
builder.setOrderBy("name asc");

GraphFolderInfoCollection folders = client.listFolders(builder);
for (GraphFolderInfo folder : folders) {
    System.out.println(folder.getDisplayName());
}

String folderId = folders.get(0).getItemId();

// Example 2: Retrieve filtered and paged messages
builder = new ODataQueryBuilder();
{
    builder.setFilter("startswith(name,'A')");
    builder.setOrderBy("name asc");
    builder.setTop(10);
    builder.setSkip(5);
    builder.setSelect(new String[]{"name", "age"});
    builder.setExpand(new String[]{"children", "parents"});
    builder.setCount(true);
    builder.setSearch("\"John Doe\"");
    builder.setFormat("json");
};

GraphMessageInfoCollection msgs = client.listMessages(folderId, builder);
for (GraphMessageInfo msg : msgs) {
    System.out.println(msg.getSubject());
}