Brevlådeshantering med Microsoft Graph
Utöver att arbeta med meddelanden, mappar och bilagor, låter Aspose.Email for Java dig också hantera brevlådefunktioner såsom kategorier, overrides för fokuserad inkorg och regler. Du kan också arbeta med flera brevlådor genom att byta resurskontext. Dessa operationer är tillgängliga via Graph‑API‑integrationen.
Hur man arbetar med Outlook‑kategorier
Kategorier i Outlook låter dig gruppera och märka meddelanden för enklare organisering. Med Aspose.Email kan du skapa, hämta, uppdatera, lista och radera kategorier programatiskt.
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());
Hur man arbetar med Overrides
Overrides styr hur meddelanden från vissa avsändare behandlas i den fokuserade inkorgen. Till exempel kan du tvinga meddelanden från en specifik avsändare att alltid visas i det fokuserade läget.
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());
Hur man arbetar med Outlook‑regler
Brevlådesregler låter dig automatisera åtgärder som att vidarebefordra meddelanden eller filtrera baserat på villkor. Graph‑API:et möjliggör att skapa, hämta, uppdatera, lista och radera inkorgsregler.
// 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());
Arbeta med flera brevlådor – Byta brevlådekontekst
Som standard utförs operationer mot den aktuella användarens brevlåda. Du kan byta kontext till en annan brevlåda (t.ex. för att lista meddelanden från en delad brevlåda) genom att ange resurstyp och resurs‑ID.
// 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‑frågor med Microsoft Graph
Aspose.Email for Java erbjuder stöd för OData‑frågor när du arbetar med Microsoft Graph. Det låter dig utföra avancerad filtrering, sortering, urval, sidindelning och expansion när du hämtar resurser som mappar, meddelanden, kontakter och kalenderposter. ODataQueryBuilder klassen tillåter dig att konstruera OData‑frågeparametrar på ett strukturerat och återanvändbart sätt istället för att manuellt bygga frågesträngar. Följande metoder kan användas för att räkna och söka i stora datamängder:
Selectför att hämta enbart de egenskaper du behöver.Filterför att tillämpa filter.OrderByför att sortera resultat.TopochSkipför sidindelning.Expandför att expandera relaterade entiteter i en enda fråga.
Flera GraphClient metoder accepterar en valfri ODataQueryBuilder parameter för att tillämpa OData‑frågor, inklusive:
- listFolders
- listMessages
- listContacts
- listCalendarItems
- listAttachments
- listCategories
- listOverrides
- listRules
- listTaskLists
- listTasks
- listNotebooks
Följande kodexempel visar hur man använder ODataQueryBuilder för att fråga mappar och hämta meddelanden med avancerade filter och sidindelning:
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());
}