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.Inbox
EwsFolderId.Calendar
EwsFolderId.Contacts
EwsFolderId.DeletedItems
EwsFolderId.Drafts
EwsFolderId.JunkEmail
EwsFolderId.Outbox
EwsFolderId.PublicFolders
EwsFolderId.Root
EwsFolderId.SentItems
EwsFolderId.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...