Microsoft Graph를 사용한 메시지 작업
Contents
[
Hide
]
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());