Pengelolaan Kotak Surat dengan Microsoft Graph
Selain bekerja dengan pesan, folder, dan lampiran, Aspose.Email for Java juga memungkinkan Anda mengelola fitur level kotak surat seperti kategori, overrides kotak masuk fokus, dan aturan. Anda juga dapat bekerja dengan beberapa kotak surat dengan mengganti konteks sumber daya. Operasi ini tersedia melalui integrasi Graph API.
Cara Bekerja dengan Kategori Outlook
Kategori di Outlook memungkinkan Anda mengelompokkan dan memberi label pada pesan untuk organisasi yang lebih mudah. Dengan Aspose.Email, Anda dapat membuat, mengambil, memperbarui, mencantumkan, dan menghapus kategori secara pemrograman.
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());
Cara Bekerja dengan Overrides
Overrides mengendalikan bagaimana pesan dari pengirim tertentu diperlakukan di Fokus Kotak Masuk. Misalnya, Anda dapat memaksa pesan dari pengirim tertentu selalu muncul di tampilan fokus.
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());
Cara Bekerja dengan Aturan Outlook
Aturan kotak surat memungkinkan Anda mengotomatisasi tindakan seperti meneruskan pesan atau memfilter berdasarkan kondisi. Graph API memungkinkan pembuatan, pengambilan, pembaruan, pencantuman, dan penghapusan aturan kotak masuk.
// 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());
Bekerja dengan Beberapa Kotak Surat - Mengganti Konteks Kotak Surat
Secara default, operasi dilakukan terhadap kotak surat pengguna saat ini. Anda dapat mengubah konteks ke kotak surat lain (misalnya, untuk mencantumkan pesan dari kotak surat bersama) dengan mengatur tipe sumber daya dan ID sumber daya.
// 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);
Kueri OData dengan Microsoft Graph
Aspose.Email for Java menyediakan dukungan untuk kueri OData saat bekerja dengan Microsoft Graph. Ini memungkinkan Anda melakukan penyaringan lanjutan, pengurutan, pemilihan, paging, dan ekspansi saat mengambil sumber daya seperti folder, pesan, kontak, dan item kalender. The ODataQueryBuilder kelas memungkinkan Anda membangun parameter kueri OData secara terstruktur dan dapat digunakan kembali alih-alih membuat string kueri secara manual. Metode berikut dapat diterapkan untuk menghitung dan mencari di seluruh dataset besar:
Selectuntuk mengambil hanya properti yang Anda butuhkan.Filteruntuk menerapkan filter.OrderByuntuk mengurutkan hasil.TopdanSkipuntuk paginasi.Expanduntuk memperluas entitas terkait dalam satu kueri.
Beberapa GraphClient metode menerima opsional ODataQueryBuilder parameter untuk menerapkan kueri OData, termasuk:
- listFolders
- listMessages
- listContacts
- listCalendarItems
- listAttachments
- listCategories
- listOverrides
- listRules
- listTaskLists
- listTasks
- listNotebooks
Contoh kode berikut menunjukkan cara menggunakan ODataQueryBuilder untuk mengkueri folder dan mengambil pesan dengan filter lanjutan serta paging:
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());
}