مدیریت صندوق پستی با Microsoft Graph

علاوه بر کار با پیام‌ها، پوشه‌ها و پیوست‌ها، Aspose.Email برای جاوا همچنین به شما امکان مدیریت ویژگی‌های سطح صندوق پستی مانند دسته‌ها، Overrideهای صندوق متمرکز و قوانین را می‌دهد. همچنین می‌توانید با سوئیچ کردن زمینه منبع، با چندین صندوق پستی کار کنید. این عملیات‌ها از طریق ادغام 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());

نحوه کار با Overrides

Overrideها تعیین می‌کنند پیام‌های ارسال‌کنندگان خاص در پوشه Focused Inbox چگونه رفتار کنند. به عنوان مثال، می‌توانید پیام‌های یک ارسال‌کننده مشخص را همیشه در نمای متمرکز نمایش دهید.

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

قوانین صندوق پستی به شما امکان می‌دهند اقداماتی مانند فوروارد کردن پیام‌ها یا فیلتر کردن بر پایه شرایط را خودکار کنید. 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());

کار با صندوق‌های پستی متعدد - سوئیچ کردن زمینه صندوق‌نامه

به طور پیش‌فرض، عملیات‌ها در صندوق پستی کاربر فعلی انجام می‌شوند. می‌توانید با تنظیم نوع منبع و شناسه منبع، زمینه را به صندوق پستی دیگری (مثلاً برای لیست کردن پیام‌ها از یک صندوق پستی مشترک) تغییر دهید.

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

کوئری‌های OData با Microsoft Graph

Aspose.Email برای جاوا پشتیبانی از کوئری‌های OData را هنگام کار با Microsoft Graph فراهم می‌کند. این امکان را می‌دهد تا فیلترهای پیشرفته، ترتیب‌بندی، انتخاب، صفحه‌بندی و گسترش را هنگام دریافت منابعی مانند پوشه‌ها، پیام‌ها، مخاطبان و آیتم‌های تقویم اعمال کنید. 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());
}