Gestion de la boîte aux lettres avec Microsoft Graph

En plus de travailler avec les messages, dossiers et pièces jointes, Aspose.Email for Java vous permet également de gérer des fonctionnalités au niveau de la boîte aux lettres telles que les catégories, les overrides de la boîte Prioritaire et les règles. Vous pouvez également travailler avec plusieurs boîtes aux lettres en changeant le contexte de ressource. Ces opérations sont disponibles via l’intégration de l’API Graph.

Comment travailler avec les catégories Outlook

Les catégories dans Outlook vous permettent de regrouper et d’étiqueter les messages pour une organisation plus facile. Avec Aspose.Email, vous pouvez créer, récupérer, mettre à jour, lister et supprimer des catégories par programme.

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());

Comment travailler avec les overrides

Les overrides contrôlent la façon dont les messages de certains expéditeurs sont traités dans la boîte de réception Prioritaire. Par exemple, vous pouvez obliger les messages d’un expéditeur spécifique à toujours apparaître dans la vue Prioritaire.

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());

Comment travailler avec les règles Outlook

Les règles de boîte aux lettres vous permettent d’automatiser des actions comme le transfert de messages ou le filtrage selon des conditions. L’API Graph permet de créer, récupérer, mettre à jour, lister et supprimer les règles de boîte de réception.

// 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());

Travailler avec plusieurs boîtes aux lettres - Changer le contexte de la boîte aux lettres

Par défaut, les opérations s’exécutent sur la boîte aux lettres de l’utilisateur actuel. Vous pouvez changer de contexte vers une autre boîte aux lettres (par exemple, pour lister les messages d’une boîte partagée) en définissant le type de ressource et l’ID de la ressource.

// 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);

Requêtes OData avec Microsoft Graph

Aspose.Email for Java prend en charge les requêtes OData lors du travail avec Microsoft Graph. Il vous permet d’effectuer des filtrages avancés, du tri, de la sélection, de la pagination et de l’expansion lors de la récupération de ressources telles que dossiers, messages, contacts et éléments de calendrier. Le ODataQueryBuilder la classe vous permet de construire des paramètres de requête OData de manière structurée et réutilisable au lieu de créer manuellement des chaînes de requête. Les méthodes suivantes peuvent être appliquées pour le comptage et la recherche sur de grands ensembles de données :

  • Select pour récupérer uniquement les propriétés dont vous avez besoin.
  • Filter pour appliquer des filtres.
  • OrderBy pour trier les résultats.
  • Top et Skip pour la pagination.
  • Expand pour développer les entités liées dans une seule requête.

Plusieurs GraphClient les méthodes acceptent un(e) optionnel(le) ODataQueryBuilder paramètre pour appliquer des requêtes OData, incluant :

  • listFolders
  • listMessages
  • listContacts
  • listCalendarItems
  • listAttachments
  • listCategories
  • listOverrides
  • listRules
  • listTaskLists
  • listTasks
  • listNotebooks

L’exemple de code suivant montre comment utiliser ODataQueryBuilder pour interroger les dossiers et récupérer les messages avec des filtres avancés et la pagination :

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());
}