Mailboxbeheer met Microsoft Graph
Naast het werken met berichten, mappen en bijlagen, laat Aspose.Email for Java u ook mailboxfuncties beheren zoals categorieën, gefocuste inbox overrides en regels. U kunt ook met meerdere mailboxen werken door de resource-context te wisselen. Deze bewerkingen zijn beschikbaar via de Graph API-integratie.
Hoe te Werken met Outlook-categorieën
Categorieën in Outlook stellen u in staat berichten te groeperen en labelen voor een gemakkelijkere organisatie. Met Aspose.Email kunt u categorieën programmatically aanmaken, ophalen, bijwerken, weergeven en verwijderen.
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());
Hoe te Werken met Overrides
Overrides bepalen hoe berichten van bepaalde afzenders worden behandeld in de Gefocuste Inbox. Bijvoorbeeld, u kunt afdwingen dat berichten van een specifieke afzender altijd in de gefocuste weergave verschijnen.
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());
Hoe te Werken met Outlook-regels
Mailboxregels stellen u in staat acties te automatiseren, zoals het doorsturen van berichten of filteren op basis van voorwaarden. De Graph API maakt het creëren, ophalen, bijwerken, weergeven en verwijderen van inboxregels mogelijk.
// 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());
Werken met Meerdere Mailboxen - Mailbox-context Wisselen
Standaard worden bewerkingen uitgevoerd tegen de mailbox van de huidige gebruiker. U kunt de context wijzigen naar een andere mailbox (bijvoorbeeld om berichten van een gedeelde mailbox weer te geven) door het resource-type en resource-ID in te stellen.
// 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-query’s met Microsoft Graph
Aspose.Email voor Java biedt ondersteuning voor OData-query’s bij het werken met Microsoft Graph. Het maakt geavanceerd filteren, sorteren, selecteren, pagineren en uitbreiden mogelijk bij het ophalen van bronnen zoals mappen, berichten, contactpersonen en agenda-items. De ODataQueryBuilder klasse stelt u in staat OData-queryparameters op te bouwen op een gestructureerde en herbruikbare manier in plaats van handmatig querystrings te maken. De volgende methoden kunnen worden toegepast voor tellen en zoeken in grote datasets:
Selectom alleen de benodigde eigenschappen op te halen.Filterom filters toe te passen.OrderByom resultaten te sorteren.TopenSkipvoor paginering.Expandom gerelateerde entiteiten uit te breiden in één query.
Verscheidene GraphClient methoden accepteren een optionele ODataQueryBuilder parameter voor het toepassen van OData-query’s, inclusief:
- listFolders
- listMessages
- listContacts
- listCalendarItems
- listAttachments
- listCategories
- listOverrides
- listRules
- listTaskLists
- listTasks
- listNotebooks
De volgende codevoorbeeld toont hoe te gebruiken ODataQueryBuilder om mappen te query’en en berichten op te halen met geavanceerde filters en paginering:
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());
}