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