Керування поштовою скринькою за допомогою 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());
Робота з кількома скриньками — переключення контексту скриньки
За замовчуванням операції виконуються щодо поштової скриньки поточного користувача. Ви можете переключити контекст на іншу скриньку (наприклад, щоб отримати список повідомлень зі спільної скриньки), встановивши тип ресурсу та ідентифікатор ресурсу.
// 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 for Java забезпечує підтримку 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());
}