Microsoft Graph를 사용한 메시지 작업

Aspose.Email for Java는 Microsoft Graph를 통한 메시지 관리를 위한 풍부한 API 세트를 제공합니다. 메시지를 목록화, 가져오기, 생성, 업데이트, 이동, 복사 및 삭제할 수 있으며, 페이지 매김 및 첨부 파일도 처리할 수 있습니다. 아래 코드 샘플은 가장 일반적인 작업 예시입니다.

메시지 목록

Inbox와 같은 특정 폴더에서 메시지를 검색하고 전체 내용을 가져올 수 있습니다:

GraphMessageInfoCollection messageInfoColl = client.listMessages(GraphKnownFolders.Inbox);
for (GraphMessageInfo messageInfo : messageInfoColl) {
    MapiMessage message = client.fetchMessage(messageInfo.getItemId());
}

보낸 날짜별 메시지 목록

보낸 날짜를 오름차순으로 정렬하려면 다음을 사용할 수 있습니다: OrderBy 특징 GraphQueryBuilder:

// create orderby messages query 'ASC'
GraphQueryBuilder builder = new GraphQueryBuilder();
builder.getSentDate().orderBy(true);
MailQuery query = builder.getQuery();

GraphMessagePageInfo pageInfo = client.listMessages(GraphKnownFolders.Inbox, new PageInfo(10), query);

메시지 가져오기

메시지 참조를 얻으면 전체 내용을 가져올 수 있습니다:

GraphMessageInfo messageInfo = messageInfoColl.get(0);
MapiMessage fetchedMessage = client.fetchMessage(messageInfo.getItemId());

메시지 업데이트

메시지를 가져온 후 내용을 수정하고 서버에 업데이트할 수 있습니다:

fetchedMessage.setSubject("Update message");
MapiMessage updatedMessage = client.updateMessage(fetchedMessage);

메시지 목록 페이지 매김

대용량 사서함을 사용할 때 페이지 매김을 통해 메시지를 청크 단위로 가져올 수 있습니다. 아래 예제는 읽지 않은 메시지를 한 페이지에 두 개씩 나열하는 방법을 보여줍니다:

// send ping test messages
for (int i = 0; i < 5; i++) {
    MailMessage eml = new MailMessage(user.EMail, user.EMail, "ping" + i, "test body");
    client.send(MapiMessage.fromMailMessage(eml));
}
// waiting for inbox
Thread.sleep(10000);

// paging option
int itemsPerPage = 2;
// create unread messages filter
GraphQueryBuilder builder = new GraphQueryBuilder();
builder.isRead().equals(false);
MailQuery query = builder.getQuery();

// list messages
GraphMessagePageInfo pageInfo = client.listMessages(GraphKnownFolders.Inbox, new PageInfo(itemsPerPage), query);
GraphMessageInfoCollection messages = pageInfo.getItems();
while (!pageInfo.getLastPage())
{
    pageInfo = client.listMessages(GraphKnownFolders.Inbox, pageInfo.getNextPage(), query);
    // add next page items to common collection
    messages.addRange(pageInfo.getItems());
}

// set messages state as read
for (GraphMessageInfo message : messages) {
    client.setRead(message.getItemId());
}

메시지 만들기

제목, 본문 및 속성을 포함한 새 메시지를 만들 수 있습니다:

MapiMessage message = new MapiMessage();
message.setSubject("Subject");
message.setBody("Body");
message.setProperty(KnownPropertyList.DISPLAY_TO, "to@host.com");
message.setProperty(KnownPropertyList.SENDER_NAME, "from");
message.setProperty(KnownPropertyList.SENT_REPRESENTING_EMAIL_ADDRESS, "from@host.com");

MapiMessage createdMessage = client.createMessage(GraphKnownFolders.Inbox, message);

메시지 보내기

메시지를 직접 보낼 수 있습니다:

client.send(message);

또는 초안 폴더에서 초안을 만든 후 초안 메시지를 보낼 수 있습니다:

MapiMessage draftMessage = client.createMessage(GraphKnownFolders.Drafts, message);
client.send(draftMessage.getItemId());

메시지 복사 및 이동

메시지는 폴더 간에 복사하거나 이동할 수 있습니다:

MapiMessage copiedMessage = client.copyMessage(GraphKnownFolders.Inbox, draftMessage.getItemId());
MapiMessage movedMessage = client.moveMessage(GraphKnownFolders.Inbox, draftMessage.getItemId());

첨부 파일 관리

메시지의 첨부 파일을 나열하고 제거하려면 다음 코드 샘플을 사용하십시오:

MapiAttachmentCollection attachments = client.listAttachments(fetchedMessage.getItemId());
for (MapiAttachment att : attachments) {
    client.deleteAttachment(att.getItemId());
}

메시지 삭제

마지막으로, 메시지를 영구 삭제할 수 있습니다:

client.delete(message.getItemId());