العمل مع الرسائل باستخدام Microsoft Graph

Aspose.Email for Java يوفر مجموعة غنية من واجهات برمجة التطبيقات لإدارة الرسائل عبر 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());