Share via


CopyFolderType Class

The CopyFolderType class represents an operation to copy folders in an Exchange database.

Inheritance Hierarchy

System.Object
  ExchangeWebServices.BaseRequestType
    ExchangeWebServices.BaseMoveCopyFolderType
      ExchangeWebServices.CopyFolderType

Namespace:  ExchangeWebServices
Assembly:  EWS (in EWS.dll)

Syntax

'Declaration
<SerializableAttribute> _
Public Class CopyFolderType _
    Inherits BaseMoveCopyFolderType
'Usage
Dim instance As CopyFolderType
[SerializableAttribute]
public class CopyFolderType : BaseMoveCopyFolderType

Remarks

The CopyFolder operation copies folders and all their contents while the content is maintained in the same structure. The copied folders will have new folder identifiers and change keys.

Examples

The following code example shows you how to copy two folders to a destination folder and then get the new folder identifiers.

static void CopyFolder(ExchangeServiceBinding esb)
{
    // Identify the folders to copy.
    FolderIdType folder1 = new FolderIdType();
    FolderIdType folder2 = new FolderIdType();
    folder1.Id = "AQAlAE1BQG1haW5";
    folder2.Id = "AQAlAE1BQG1haW4";
    FolderIdType[] folders = new FolderIdType[2] { folder1, folder2 };

    // Identify the destination folder.
    FolderIdType destFolder = new FolderIdType();
    destFolder.Id = "AQAlAE1BQG1haW1";

    // Form the copy folder request.
    CopyFolderType request = new CopyFolderType();
    request.FolderIds = folders;
    request.ToFolderId = new TargetFolderIdType();
    request.ToFolderId.Item = destFolder;

    try
    {
        // Send the request and get the response.
        CopyFolderResponseType response = esb.CopyFolder(request);
        ArrayOfResponseMessagesType aormt = response.ResponseMessages;
        ResponseMessageType[] rmta = aormt.Items;

        foreach (ResponseMessageType rmt in rmta)
        {
            if (rmt.ResponseClass == ResponseClassType.Success)
            { 
                foreach (BaseFolderType folder in (rmt as FolderInfoResponseMessageType).Folders)
                {
                    // Get the new folder ID and change key.
                    FolderIdType identifier = folder.FolderId;
                }
            }
            else
            {
                throw new Exception("Folder copy failed.");
            }
        }
    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
    }
}

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.