Postfachverwaltung mit Microsoft Graph

Zusätzlich zur Arbeit mit Nachrichten, Ordnern und Anhängen ermöglicht Aspose.Email for Java auch die Verwaltung von Postfach‑Funktionen wie Kategorien, Overrides für den fokussierten Posteingang und Regeln. Sie können zudem mit mehreren Postfächern arbeiten, indem Sie den Ressourcen‑Kontext wechseln. Diese Vorgänge stehen über die Graph‑API‑Integration zur Verfügung.

So arbeiten Sie mit Outlook‑Kategorien

Kategorien in Outlook ermöglichen das Gruppieren und Kennzeichnen von Nachrichten für eine leichtere Organisation. Mit Aspose.Email können Sie Kategorien programmgesteuert erstellen, abrufen, aktualisieren, auflisten und löschen.

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

So arbeiten Sie mit Overrides

Overrides steuern, wie Nachrichten bestimmter Absender im fokussierten Posteingang behandelt werden. Zum Beispiel können Sie Nachrichten eines bestimmten Absenders immer im fokussierten Ansicht anzeigen lassen.

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

So arbeiten Sie mit Outlook‑Regeln

Postfachregeln ermöglichen die Automatisierung von Aktionen wie das Weiterleiten von Nachrichten oder das Filtern basierend auf Bedingungen. Die Graph‑API erlaubt das Erstellen, Abrufen, Aktualisieren, Auflisten und Löschen von Posteingangsregeln.

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

Arbeiten mit mehreren Postfächern – Postfachkontext wechseln

Standardmäßig werden Vorgänge gegen das Postfach des aktuellen Benutzers ausgeführt. Sie können den Kontext zu einem anderen Postfach wechseln (z. B. um Nachrichten aus einem freigegebenen Postfach aufzulisten), indem Sie den Ressourcentyp und die Ressourcen‑ID festlegen.

// 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‑Abfragen mit Microsoft Graph

Aspose.Email für Java unterstützt OData‑Abfragen bei der Arbeit mit Microsoft Graph. Damit können Sie erweiterte Filterungen, Sortierungen, Auswahl, Seitennavigation und Erweiterungen beim Abrufen von Ressourcen wie Ordnern, Nachrichten, Kontakten und Kalenderobjekten durchführen. Die ODataQueryBuilder Klasse ermöglicht das Erstellen von OData‑Abfrageparametern auf strukturierte und wiederverwendbare Weise, anstatt Abfragezeichenketten manuell zu bauen. Die folgenden Methoden können zum Zählen und Durchsuchen großer Datensätze verwendet werden:

  • Select um nur die benötigten Eigenschaften abzurufen.
  • Filter zum Anwenden von Filtern.
  • OrderBy zur Sortierung der Ergebnisse.
  • Top und Skip für die Seitennavigation.
  • Expand um verwandte Entitäten in einer einzigen Abfrage zu erweitern.

Mehrere GraphClient Methoden akzeptieren ein optionales ODataQueryBuilder Parameter zum Anwenden von OData‑Abfragen, einschließlich:

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

Das folgende Codebeispiel zeigt, wie man verwendet ODataQueryBuilder um Ordner abzufragen und Nachrichten mit erweiterten Filtern und Seitennavigation abzurufen:

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