Gestione della casella di posta con Microsoft Graph
Oltre a lavorare con messaggi, cartelle e allegati, Aspose.Email per Java consente anche di gestire funzionalità a livello di casella come categorie, sovrascritture della Posta in arrivo focalizzata e regole. È inoltre possibile lavorare con più caselle di posta cambiando il contesto della risorsa. Queste operazioni sono disponibili tramite l’integrazione con l’API Graph.
Come lavorare con le categorie di Outlook
Le categorie in Outlook consentono di raggruppare e etichettare i messaggi per una migliore organizzazione. Con Aspose.Email, è possibile creare, recuperare, aggiornare, elencare ed eliminare le categorie in modo programmatico.
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());
Come lavorare con le sovrascritture
Le sovrascritture controllano il modo in cui i messaggi di certi mittenti vengono trattati nella Posta in arrivo focalizzata. Ad esempio, puoi forzare i messaggi di un mittente specifico a comparire sempre nella vista focalizzata.
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());
Come lavorare con le regole di Outlook
Le regole della casella di posta consentono di automatizzare azioni come l’inoltro di messaggi o il filtraggio basato su condizioni. L’API Graph permette di creare, recuperare, aggiornare, elencare ed eliminare le regole della posta in arrivo.
// 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());
Lavorare con più caselle di posta - Cambio di contesto della casella
Per impostazione predefinita, le operazioni sono eseguite sulla casella di posta dell’utente corrente. Puoi cambiare il contesto a un’altra casella di posta (ad esempio, per elencare i messaggi da una casella condivisa) impostando il tipo di risorsa e l’ID della risorsa.
// 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);
Query OData con Microsoft Graph
Aspose.Email per Java fornisce il supporto alle query OData quando si lavora con Microsoft Graph. Consente di eseguire filtri avanzati, ordinamento, selezione, paging ed espansione durante il recupero di risorse come cartelle, messaggi, contatti e voci di calendario. Il ODataQueryBuilder la classe consente di costruire parametri di query OData in modo strutturato e riutilizzabile invece di creare manualmente le stringhe di query. I seguenti metodi possono essere usati per contare e cercare nei grandi set di dati:
Selectper recuperare solo le proprietà necessarie.Filterper applicare filtri.OrderByper ordinare i risultati.TopeSkipper il paging.Expandper espandere entità correlate in una singola query.
Diversi GraphClient i metodi accettano un opzionale ODataQueryBuilder parametro per applicare query OData, includendo:
- listFolders
- listMessages
- listContacts
- listCalendarItems
- listAttachments
- listCategories
- listOverrides
- listRules
- listTaskLists
- listTasks
- listNotebooks
Il seguente esempio di codice mostra come utilizzare ODataQueryBuilder per interrogare le cartelle e recuperare i messaggi con filtri avanzati e paging:
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());
}