Bekerja dengan Pesan menggunakan Microsoft Graph

Aspose.Email for Java menyediakan serangkaian API yang lengkap untuk mengelola pesan melalui Microsoft Graph. Anda dapat mencantumkan, mengambil, membuat, memperbarui, memindahkan, menyalin, dan menghapus pesan, serta menangani paginasi dan lampiran. Contoh kode di bawah ini merupakan contoh operasi yang paling umum.

Daftar Pesan

Anda dapat mengambil pesan dari folder tertentu, seperti Kotak Masuk, dan mengambil konten lengkapnya:

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

Daftar Pesan berdasarkan Tanggal Kirim

Untuk mengurutkan pesan berdasarkan tanggal kirim secara naik, Anda dapat menggunakan OrderBy fitur dari 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);

Ambil Pesan

Setelah Anda memiliki referensi pesan, Anda dapat mengambil konten lengkapnya:

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

Perbarui Pesan

Setelah mengambil pesan, Anda dapat memodifikasi isinya dan memperbaruinya di server:

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

Paginasi dalam Daftar Pesan

Saat bekerja dengan kotak surat besar, Anda dapat menggunakan paging untuk mengambil pesan secara bertahap. Contoh di bawah ini menunjukkan cara mencantumkan pesan yang belum dibaca dalam halaman berisi dua item masing-masing:

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

Buat Pesan

Anda dapat membuat pesan baru dengan subjek, isi, dan properti:

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

Kirim Pesan

Anda dapat mengirim pesan secara langsung:

client.send(message);

Atau kirim pesan draf setelah membuatnya di folder Draf:

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

Salin dan Pindahkan Pesan

Pesan dapat disalin atau dipindahkan antar folder:

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

Kelola Lampiran

Untuk menampilkan dan menghapus lampiran dari pesan, gunakan contoh kode berikut:

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

Hapus Pesan

Akhirnya, Anda dapat menghapus pesan secara permanen:

client.delete(message.getItemId());