Manage Mail Folders with IGraphClient

The Aspose.Email IGraphClient interface provides methods to create, list, update, copy, move, and delete folders using Microsoft Graph.

List Folders

Use the ListFolders method to retrieve all folders available for the current user. Each folder is returned as a FolderInfo object, which includes properties like DisplayName, ItemId, HasSubFolders, and more.

var folders = client.ListFolders();

foreach (var folder in folders)
{
    Console.WriteLine(folder.DisplayName);
}

List Folders Asynchronously

The following example shows how to retrieve all folders in a mailbox and display their names using the ListFoldersAsync method.

var folders = await client.ListFoldersAsync();
foreach (var folder in folders)
{
    Console.WriteLine(folder.DisplayName);
}

var folderId = folders.Find(x => x.DisplayName == "Inbox").ItemId;
var msgsPage = await client.ListMessagesAsync(folderId, new PageInfo(15) { PageOffset = 0 }, null);
var msgs = msgsPage.Items;
foreach (var msg in msgs)
{
    Console.WriteLine(msg.Subject);
}

Create and Update a Folder

To create a new folder, call the CreateFolder method. This returns a FolderInfo object, which can then be modified and updated using the UpdateFolder() method.

var folderInfo = client.CreateFolder("FolderName");
folderInfo.DisplayName = "FolderAnotherName";
client.UpdateFolder(folderInfo);

Copy a Folder

Use the CopyFolder method to copy a folder to a new parent location. This method requires the destination parent folder ID and the ID of the folder being copied.

var folderInfo1 = client.CreateFolder("Folder1");
var folderInfo2 = client.CreateFolder("Folder2");
    
// copy Folder2 to Folder1
client.CopyFolder(folderInfo1.ItemId, folderInfo2.ItemId);

Move and Delete a Folder

  • To move a folder, use the MoveFolder method which accepts newParentId and itemId.
  • To delete a folder, use the Delete method and provide the folder’s ItemId.
var folderInfo1 = client.CreateFolder("Folder1");
var folderInfo2 = client.CreateFolder("Folder2");
    
// move Folder2 to Folder1
client.MoveFolder(folderInfo1.ItemId, folderInfo2.ItemId);
    
// delete Folder1
client.Delete(folderInfo1.ItemId)