Microsoft Graph를 이용한 사서함 관리
메시지, 폴더 및 첨부 파일 작업 외에도 Aspose.Email for Java는 카테고리, 집중된 인박스 Overrides 및 규칙과 같은 사서함 수준 기능을 관리할 수 있게 합니다. 리소스 컨텍스트를 전환하여 다중 사서함을 작업할 수도 있습니다. 이러한 작업은 Graph API 통합을 통해 사용할 수 있습니다.
Outlook 카테고리 사용 방법
Outlook의 카테고리를 사용하면 메시지를 그룹화하고 라벨을 지정하여 조직을 쉽게 할 수 있습니다. Aspose.Email를 사용하면 프로그래밍 방식으로 카테고리를 생성, 가져오기, 업데이트, 목록화 및 삭제할 수 있습니다.
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());
Overrides 사용 방법
Overrides는 특정 발신자의 메시지가 집중된 인박스에서 어떻게 처리되는지를 제어합니다. 예를 들어, 특정 발신자의 메시지를 항상 집중된 보기에 표시하도록 강제할 수 있습니다.
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());
Outlook 규칙 사용 방법
사서함 규칙을 사용하면 조건에 따라 메시지를 전달하거나 필터링하는 등 자동화 작업을 수행할 수 있습니다. Graph API를 통해 인박스 규칙을 생성, 가져오기, 업데이트, 목록화 및 삭제할 수 있습니다.
// 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());
다중 사서함 작업 - 사서함 컨텍스트 전환
기본적으로 작업은 현재 사용자의 사서함에 대해 수행됩니다. 리소스 유형과 리소스 ID를 설정하면 다른 사서함(예: 공유 사서함의 메시지를 목록화)으로 컨텍스트를 전환할 수 있습니다.
// 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);
Microsoft Graph와 OData 쿼리
Aspose.Email for Java는 Microsoft Graph와 작업할 때 OData 쿼리를 지원합니다. 폴더, 메시지, 연락처 및 캘린더 항목과 같은 리소스를 검색할 때 고급 필터링, 정렬, 선택, 페이지 매김 및 확장을 수행할 수 있습니다. ODataQueryBuilder 클래스는 쿼리 문자열을 수동으로 작성하는 대신 구조화되고 재사용 가능한 방식으로 OData 쿼리 매개변수를 구성할 수 있게 해줍니다. 다음 메서드는 대규모 데이터 세트에 대한 카운트 및 검색에 적용할 수 있습니다:
Select필요한 속성만 가져오기 위해.Filter필터를 적용하기 위해.OrderBy결과를 정렬하기 위해.Top및Skip페이지 매김을 위해.Expand단일 쿼리에서 관련 엔터티를 확장합니다.
여러 GraphClient 메서드는 선택적 ODataQueryBuilder OData 쿼리를 적용하기 위한 매개변수, 포함:
- listFolders
- listMessages
- listContacts
- listCalendarItems
- listAttachments
- listCategories
- listOverrides
- listRules
- listTaskLists
- listTasks
- listNotebooks
다음 코드 샘플은 사용 방법을 보여줍니다 ODataQueryBuilder 폴더를 쿼리하고 고급 필터와 페이지 매김으로 메시지를 가져오기 위해:
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());
}