Closed GabrieleDelPanno closed 2 months ago
Hello @GabrieleDelPanno,
To iterate through all subfolders recursively, you can use the ListFolders(string) method and modify the code as follows:
var accessParams = new AccessParameters()
{
TenantId = "YourTenantID",
ClientId = "YourClientID",
ClientSecret = "YourClientSecret",
UserId = "User's Object ID"
};
var tokenProvider = new GraphTokenProvider(accessParams);
using var client = GraphClient.GetClient(tokenProvider, accessParams.TenantId);
var rootFolders = client.ListFolders();
foreach (var rootFolder in rootFolders)
{
ProcessFolder(rootFolder.ItemId);
}
The ProcessFolder
method implementation:
void ProcessFolder(string folderId)
{
var messages = client.ListMessages(folderId);
foreach (var messageInfo in messages)
{
Console.WriteLine(messageInfo.Subject);
}
var subfolders = client.ListFolders(folderId);
foreach (var subfolder in subfolders)
{
ProcessFolder(subfolder.ItemId);
}
}
Hello @dmitrysamodurov, many thanks for your help, have a nice day!!
I wish to read all emails of a tenant in sent/inbox folders, root and subfolders, using Graph Client and Aspose Email I've found on your documentation how to read from Inbox root but I'm not able to find how to iterate on the subfolders Can you give me an advice on how to do it ? Also, to read from sent folder ?
C#, Aspose.Email for .Net
var accessParams = new AccessParameters() { TenantId = "YourTenantID", ClientId = "YourClientID", ClientSecret = "YourClientSecret", UserId = "User's Object ID" }; var tokenProvider = new GraphTokenProvider(accessParams);
using var client = GraphClient.GetClient(tokenProvider, accessParams.TenantId); var folders = client.ListFolders();
foreach (var folder in folders) { if (folder.DisplayName.Equals("Inbox")) { // list messages in inbox var inboxMessages = client.ListMessages(folder.ItemId);
}