Gerenciamento de Caixa de Correio com Microsoft Graph
Além de trabalhar com mensagens, pastas e anexos, Aspose.Email for Java também permite gerenciar recursos a nível de caixa de correio, como categorias, overrides da caixa de entrada focada e regras. Você também pode trabalhar com múltiplas caixas de correio alterando o contexto de recurso. Essas operações estão disponíveis através da integração com a API Graph.
Como Trabalhar com Categorias do Outlook
Categorias no Outlook permitem que você agrupe e rotule mensagens para facilitar a organização. Com Aspose.Email, você pode criar, buscar, atualizar, listar e excluir categorias programaticamente.
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());
Como Trabalhar com Overrides
Overrides controlam como mensagens de certos remetentes são tratadas na Caixa de Entrada Focada. Por exemplo, você pode forçar que mensagens de um remetente específico sempre apareçam na visualização focada.
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());
Como Trabalhar com Regras do Outlook
As regras de caixa de correio permitem que você automatize ações, como encaminhar mensagens ou filtrar com base em condições. A API Graph permite criar, buscar, atualizar, listar e excluir regras da caixa de entrada.
// 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());
Trabalhando com Múltiplas Caixas de Correio - Alternando o Contexto da Caixa de Correio
Por padrão, as operações são realizadas na caixa de correio do usuário atual. Você pode trocar o contexto para outra caixa de correio (por exemplo, para listar mensagens de uma caixa de correio compartilhada) definindo o tipo e o ID do recurso.
// 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);
Consultas OData com Microsoft Graph
Aspose.Email for Java fornece suporte a consultas OData ao trabalhar com Microsoft Graph. Ele permite que você realize filtragem avançada, ordenação, seleção, paginação e expansão ao recuperar recursos como pastas, mensagens, contatos e itens de calendário. O ODataQueryBuilder classe permite que você construa parâmetros de consulta OData de forma estruturada e reutilizável, ao invés de montar manualmente strings de consulta. Os métodos a seguir podem ser aplicados para contagem e pesquisa em grandes conjuntos de dados:
Selectpara recuperar apenas as propriedades que você precisa.Filterpara aplicar filtros.OrderBypara ordenar resultados.TopeSkippara paginação.Expandpara expandir entidades relacionadas em uma única consulta.
Vários GraphClient os métodos aceitam um opcional ODataQueryBuilder parâmetro para aplicar consultas OData, incluindo:
- listFolders
- listMessages
- listContacts
- listCalendarItems
- listAttachments
- listCategories
- listOverrides
- listRules
- listTaskLists
- listTasks
- listNotebooks
O exemplo de código a seguir mostra como usar ODataQueryBuilder para consultar pastas e recuperar mensagens com filtros avançados e paginação:
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());
}