Work with Folders using Microsoft Graph
Aspose.Email for Java allows you to perform a variety of folder operations in Microsoft Graph, such as listing, creating, updating, copying, moving, and deleting folders. Below are examples of common scenarios.
List Folders
The following example retrieves all folders and prints their display names along with their properties:
GraphFolderInfoCollection folders = client.listFolders();
for (GraphFolderInfo folderInfo : folders) {
System.out.println(folderInfo.getDisplayName());
for (KeyValuePair<Long, MapiProperty> prop : folderInfo.getProperties()) {
System.out.println(prop.getValue().getDescriptor().toString() + " " + prop.getValue().getString());
}
}
List Subfolders from Inbox Folder
You can also list subfolders under a specific folder, such as Inbox:
GraphFolderInfoCollection inboxFolders = client.listFolders(GraphKnownFolders.Inbox);
Create Folders
You can create both root-level folders and subfolders.
Create a Root Folder
GraphFolderInfo newFolder = client.createFolder("TEST_FOLDER");
Create Subfolders
The following code sample shows how to create a subfolder under the Inbox folder:
GraphFolderInfo inboxTestSubFolder1 = client.createFolder(GraphKnownFolders.Inbox, "TEST_SUBFOLDER_1");
GraphFolderInfo inboxTestSubFolder2 = client.createFolder(newFolder.getItemId(), "TEST_SUBFOLDER_2");
Get Folder
The following code sample demonstrates how to retrieve a specific folder, such as Sent Items:
GraphFolderInfo sentItemsFolder = client.getFolder(GraphKnownFolders.SentItems);
Update Folder
You can update folder properties, for example, its display name:
GraphFolderInfo originalFolder = client.createFolder("TEST_FOLDER");
originalFolder.setDisplayName("NEW_TEST_FOLDER");
GraphFolderInfo updatedFolder = client.updateFolder(originalFolder);
Copy Folder and Its Content
The following example shows how to copy a folder along with its subfolders and messages:
GraphFolderInfo parentFolder = client.createFolder("PARENT_FOLDER");
GraphFolderInfo testFolder = client.createFolder("TEST_FOLDER");
GraphFolderInfo testSubFolder = client.createFolder(testFolder.getItemId(), "TEST_SUBFOLDER");
MapiMessage message = new MapiMessage();
message.setSubject("Test subject");
message.setBody("Test 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(testSubFolder.getItemId(), message);
GraphFolderInfo folderCopy = client.copyFolder(parentFolder.getItemId(), testFolder.getItemId());
GraphFolderInfoCollection folderColl = client.listFolders(parentFolder.getItemId());
// TEST_FOLDER
System.out.println(folderColl.get(0).getDisplayName());
folderColl = client.listFolders(folderColl.get(0).getItemId());
// TEST_SUBFOLDER
System.out.println(folderColl.get(0).getDisplayName());
GraphMessageInfoCollection listMessages = client.listMessages(folderColl.get(0).getItemId());
// Test subject
System.out.println(listMessages.get(0).getSubject());
Move Folder and Its Content
You can also move a folder with all its content to another location:
GraphFolderInfo folder = client.moveFolder(parentFolder.getItemId(), testFolder.getItemId());
Delete Folder
Use the following code sample to remove a folder permanently:
client.delete(testFolder.getItemId());