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 결과를 정렬하기 위해.
  • TopSkip 페이지 매김을 위해.
  • 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());
}