More .NET libraries
-
Rebex Mail Pack
IMAP, MS Graph, EWS, POP3, SMTP, MIME, S/MIME, MSG
-
Rebex Total Pack
All Rebex .NET libraries together
Back to feature list...
Folder operations
On this page:
The sample code on this page assumes you have already connected and authenticated to an Exchange server.
Folder IDs
A folder ID uniquely identifies a folder at the Exchange server. In Rebex EWS,
folder IDs are represented by EwsFolderId class.
// create EWS client instance, connect, log in var ews = new Rebex.Net.Ews(); ews.Connect(hostname); ews.Login(username, password); // find the 'Orders' subfolder in the root folder EwsFolderInfo ordersFolder = ews.FindFolder(EwsFolderId.Root, "Orders"); EwsFolderId ordersId = ordersFolder.Id; // get a list of messages in the 'Orders' folder var ordersList = ews.GetMessageList(ordersId, EwsItemFields.Fast);
' create EWS client instance, connect, log in Dim ews = New Rebex.Net.Ews() ews.Connect(hostname) ews.Login(username, password) ' find the 'Orders' subfolder in the root folder Dim ordersFolder As EwsFolderInfo = ews.FindFolder(EwsFolderId.Root, "Orders") Dim ordersId As EwsFolderId = ordersFolder.Id ' get a list of messages in the 'Orders' folder Dim ordersList = ews.GetMessageList(ordersId, EwsItemFields.Fast)
Tip: To get a list of subfolders, use GetFolderList method.
To get an ID of a specific subfolder, use the FindFolder method.
Tip: See Exchange IDs for more information.
Tip: See also Accessing shared mailboxes.
Well-known folder IDs
Additionally, well-known folders such as 'Inbox', 'Sent Items' or the root folder are also accessible
using a set of predefined folder IDs. These constant IDs are accessible through static
properties of EwsFolderId class.
// get a list of messages in the 'Inbox' well-known folder var messages = ews.GetMessageList(EwsFolderId.Inbox, EwsItemFields.Fast); // convert 'Inbox' well-known ID to an ordinary folder ID EwsFolderId inboxId = EwsFolderId.Inbox; inboxId = ews.GetFolderId(inboxId);
' get a list of messages in the 'Inbox' well-known folder Dim messages = ews.GetMessageList(EwsFolderId.Inbox, EwsItemFields.Fast) ' convert 'Inbox' well-known ID to an ordinary folder ID Dim inboxId As EwsFolderId = EwsFolderId.Inbox inboxId = ews.GetFolderId(inboxId)
Well-known folder IDs:
EwsFolderId.InboxEwsFolderId.CalendarEwsFolderId.ContactsEwsFolderId.DeletedItemsEwsFolderId.DraftsEwsFolderId.JunkEmailEwsFolderId.OutboxEwsFolderId.PublicFoldersEwsFolderId.RootEwsFolderId.SentItemsEwsFolderId.Tasks
Getting folder info
To retrieve information about a specific folder, use GetFolderInfo method
that returns an instance of EwsFolderInfo object:
// create EWS client instance, connect, log in
// ...
// get info about 'Inbox' folder
EwsFolderInfo folder = ews.GetFolderInfo(EwsFolderId.Inbox);
// print some values:
Console.WriteLine("Folder: {0}", folder.Name);
Console.WriteLine("Total items: {0}", folder.TotalItemCount);
' create EWS client instance, connect, log in
' ...
' get info about 'Inbox' folder
Dim folder As EwsFolderInfo = ews.GetFolderInfo(EwsFolderId.Inbox)
' print some values:
Console.WriteLine("Folder: {0}", folder.Name)
Console.WriteLine("Total items: {0}", folder.TotalItemCount)
Tip: GetFolderList is similar to GetFolderInfo, but it returns a list of
EwsFolderInfo objects that represent subfolders.
Getting list of folders
To get a list of subfolders, use the GetFolderList method:
// create EWS client instance, connect, log in
// ...
// get a list of folders at the root level
IList<EwsFolderInfo> rootFolders =
ews.GetFolderList(EwsFolderId.Root);
// get a list of all folders
IList<EwsFolderInfo> allFolders =
ews.GetFolderList(EwsFolderId.Root, EwsTraversalScope.Deep);
' create EWS client instance, connect, log in
' ...
' get a list of folders at the root level
Dim rootFolders As IList(Of EwsFolderInfo) =
ews.GetFolderList(EwsFolderId.Root)
' get a list of all folders
Dim allFolders As IList(Of EwsFolderInfo) =
ews.GetFolderList(EwsFolderId.Root, EwsTraversalScope.Deep)
Finding a folder with a specific name
To find a custom folder that can't be represented by a well-known folder ID, use FindFolder method:
// create EWS client instance, connect, log in // ... // find folder 'Orders' under 'Root' EwsFolderInfo folder = ews.FindFolder(EwsFolderId.Root, "Orders");
' create EWS client instance, connect, log in ' ... ' find folder 'Orders' under 'Root' Dim folder As EwsFolderInfo = ews.FindFolder(EwsFolderId.Root, "Orders")
Checking folder existence
To determine whether a folder exists, use FolderExists method:
// create EWS client instance, connect, log in
// ...
// create folder 'Orders' only when it doesn't already exists
bool exists = ews.FolderExists(EwsFolderId.Root, "Orders");
if (!exists)
ews.CreateFolder(EwsFolderId.Root, "Orders");
' create EWS client instance, connect, log in
' ...
' create folder 'Orders' only when it doesn't already exists
Dim exists As Boolean = ews.FolderExists(EwsFolderId.Root, "Orders")
If Not exists Then
ews.CreateFolder(EwsFolderId.Root, "Orders")
End If
Creating and removing folders
To create a new folder, use CreateFolder method. To remove an existing folder including its content , use DeleteFolder method.
// create EWS client instance, connect, log in // ... // create new folder 'Orders' under 'Inbox' EwsFolderId folderId = ews.CreateFolder(EwsFolderId.Inbox, "Orders"); // delete desired folder ews.DeleteFolder(folderId);
' create EWS client instance, connect, log in ' ... ' create new folder 'Orders' under 'Inbox' Dim folderId As EwsFolderId = ews.CreateFolder(EwsFolderId.Inbox, "Orders") ' delete desired folder ews.DeleteFolder(folderId)
Note: Use DeleteMode property to specify whether delete folder permanently or move it to Deleted Items folder.
Deleting folder content
To delete content of a folder, use DeleteFolderContent method.
You can choose whether to only delete items in the specified folder, or whether to delete subfolders as well.
// create EWS client instance, connect, log in // ... // delete items in the specified folder ews.DeleteFolderContent(folderId, EwsDeleteScope.ItemsOnly);
' create EWS client instance, connect, log in ' ... ' delete items in the specified folder ews.DeleteFolderContent(folderId, EwsDeleteScope.ItemsOnly)
DeleteFolderContent method is available in Exchange 2010 SP1 and later.Note: Use DeleteMode property to specify whether delete folder permanently or move it to Deleted Items folder.
Renaming folders
To rename a folder, use Ews.RenameFolder method:
// create EWS client instance, connect, log in // ... // find a folder EwsFolderInfo folder = ews.FindFolder(EwsFolderId.Root, "Orders"); // rename the folder to 'Orders 2015' ews.RenameFolder(folder.Id, "Orders 2015");
' create EWS client instance, connect, log in ' ... ' find a folder Dim folder As EwsFolderInfo = ews.FindFolder(EwsFolderId.Root, "Orders") ' rename the folder to 'Orders 2015' ews.RenameFolder(folder.Id, "Orders 2015")
Copying and moving folders
To move a subfolder to another parent folder, use Ews.MoveFolder method.
To copy a subfolder, use Ews.CopyFolder method.
// create EWS client instance, connect, log in
// ...
// get a folder
EwsFolderInfo folder = ews.FindFolder(EwsFolderId.Root, "Orders");
// move or copy the folder to the 'Inbox' folder
if (move)
ews.MoveFolder(folder.Id, EwsFolderId.Inbox);
else
ews.CopyFolder(folder.Id, EwsFolderId.Inbox);
' create EWS client instance, connect, log in
' ...
' get a folder
Dim folder As EwsFolderInfo = ews.FindFolder(EwsFolderId.Root, "Orders")
' move or copy the folder to the 'Inbox' folder
If move Then
ews.MoveFolder(folder.Id, EwsFolderId.Inbox)
Else
ews.CopyFolder(folder.Id, EwsFolderId.Inbox)
End If
Tip: Both CopyFolder and MoveFolder methods return the ID of the new folder.
Back to feature list...