Quản lý Hộp thư với Microsoft Graph
Không chỉ làm việc với tin nhắn, thư mục và tệp đính kèm, Aspose.Email cho Java còn cho phép bạn quản lý các tính năng cấp hộp thư như danh mục, overrides hộp đến tập trung và quy tắc. Bạn cũng có thể làm việc với nhiều hộp thư bằng cách chuyển đổi ngữ cảnh tài nguyên. Những thao tác này có sẵn thông qua tích hợp Graph API.
Cách làm việc với Danh mục Outlook
Danh mục trong Outlook cho phép bạn nhóm và gắn nhãn các tin nhắn để tổ chức dễ hơn. Với Aspose.Email, bạn có thể tạo, lấy, cập nhật, liệt kê và xóa danh mục một cách lập trình.
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());
Cách làm việc với Overrides
Overrides kiểm soát cách các tin nhắn từ một số người gửi nhất định được xử lý trong Hộp đến Chủ động. Ví dụ, bạn có thể buộc các tin nhắn từ một người gửi cụ thể luôn xuất hiện trong chế độ xem chủ động.
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());
Cách làm việc với Quy tắc Outlook
Quy tắc hộp thư cho phép bạn tự động hoá các hành động như chuyển tiếp tin nhắn hoặc lọc dựa trên các điều kiện. Graph API cho phép tạo, lấy, cập nhật, liệt kê và xóa các quy tắc hộp đến.
// 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());
Làm việc với Nhiều Hộp thư - Chuyển đổi Ngữ cảnh Hộp thư
Mặc định, các thao tác được thực hiện trên hộp thư của người dùng hiện tại. Bạn có thể chuyển ngữ cảnh sang một hộp thư khác (ví dụ, để liệt kê tin nhắn từ hộp thư chia sẻ) bằng cách đặt loại tài nguyên và ID tài nguyên.
// 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);
Truy vấn OData với Microsoft Graph
Aspose.Email cho Java cung cấp hỗ trợ cho các truy vấn OData khi làm việc với Microsoft Graph. Nó cho phép bạn thực hiện lọc nâng cao, sắp xếp, chọn, phân trang và mở rộng khi truy xuất các tài nguyên như thư mục, tin nhắn, liên hệ và mục lịch. Các ODataQueryBuilder lớp cho phép bạn xây dựng các tham số truy vấn OData một cách có cấu trúc và có thể tái sử dụng thay vì tự tay xây dựng chuỗi truy vấn. Các phương thức sau có thể được áp dụng để đếm và tìm kiếm trên các tập dữ liệu lớn:
Selectđể chỉ lấy các thuộc tính bạn cần.Filterđể áp dụng bộ lọc.OrderByđể sắp xếp kết quả.TopvàSkipđể phân trang.Expandđể mở rộng các thực thể liên quan trong một truy vấn duy nhất.
Một số GraphClient các phương thức chấp nhận một tùy chọn ODataQueryBuilder tham số để áp dụng các truy vấn OData, bao gồm:
- listFolders
- listMessages
- listContacts
- listCalendarItems
- listAttachments
- listCategories
- listOverrides
- listRules
- listTaskLists
- listTasks
- listNotebooks
Mẫu mã dưới đây cho thấy cách sử dụng ODataQueryBuilder để truy vấn các thư mục và lấy tin nhắn với các bộ lọc và phân trang nâng cao:
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());
}