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:

  • Select om alleen de benodigde eigenschappen op te halen.
  • Filter om filters toe te passen.
  • OrderBy om resultaten te sorteren.
  • Top en Skip voor paginering.
  • Expand om 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());
}