کار با پیام‌ها با استفاده از Microsoft Graph

Aspose.Email for Java مجموعه‌ای غنی از APIها را برای مدیریت پیام‌ها از طریق Microsoft Graph فراهم می‌کند. می‌توانید پیام‌ها را لیست، دریافت، ایجاد، به‌روزرسانی، جابجا، کپی و حذف کنید، همچنین می‌توانید صفحه‌بندی و پیوست‌ها را مدیریت کنید. نمونه‌های کد زیر مثال‌هایی از رایج‌ترین عملیات هستند.

لیست پیام‌ها

می‌توانید پیام‌ها را از یک پوشه خاص، مانند صندوق ورودی، بازیابی کنید و محتوای کامل آنها را دریافت کنید:

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());