עבודה עם הודעות באמצעות 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());