การจัดการกล่องจดหมายด้วย Microsoft Graph
นอกเหนือจากการทำงานกับข้อความ โฟลเดอร์ และไฟล์แนบ Aspose.Email for Java ยังอนุญาตให้คุณจัดการคุณลักษณะระดับกล่องจดหมาย เช่น หมวดหมู่ การ Override ของกล่องจดหมายสำคัญ และกฎต่าง ๆ คุณสามารถทำงานกับหลายกล่องจดหมายโดยสลับบริบทของทรัพยากร การดำเนินการเหล่านี้พร้อมใช้งานผ่านการบูรณาการกับ Graph API
วิธีทำงานกับ Outlook Categories
Categories ใน 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
Overrides ควบคุมว่าข้อความจากผู้ส่งบางรายจะถูกจัดการอย่างไรในกล่องจดหมายสำคัญ (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 Graph อนุญาตให้สร้าง ดึง อัปเดต แสดงรายการ และลบกฎของกล่องจดหมายเข้า
// 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 เมธอดรับค่า optional 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());
}