Removing delegates by using the EWS Managed API 2.0

Last modified: October 13, 2012

Applies to: EWS Managed API | Exchange Server 2007 Service Pack 1 (SP1) | Exchange Server 2010

Note: This content applies to the EWS Managed API 2.0 and earlier versions. For the latest information about the EWS Managed API, see Web services in Exchange.

You can use the Microsoft Exchange Web Services (EWS) Managed API to remove delegates from a primary account.

To remove a delegate from an account

  1. Create a list to hold the UserId objects that identify the delegates to remove from the primary account. This example uses a generic List object to hold the delegate list.

    List<UserId> delegatesToRemove = new List<UserId>();
    
  2. Add to the list the UserId object that identifies the delegates that you want to remove.

    delegatesToRemove.Add(delegateUserId);
    
  3. Create a Mailbox object to represent the primary account that the delegates are to be removed from.

    Mailbox mailbox = new Mailbox("primaryAccount@email.address");
    
  4. Call the RemoveDelegate operation to remove the delegates from the primary account.

    Collection<DelegateUserResponse> response = exchangeService.RemoveDelegates(mailbox, delegatesToRemove);
    

The RemoveDelegates method removes the specified account holders as delegates of the primary account. The list of account holders can be an array of UserId objects, or it can be any object that implements the IEnumerable interface and returns UserId objects.

This procedure assumes that a valid ExchangeService object is bound to the primary user's account, or that the primary user's account is being impersonated.

Example

The following code example shows how to remove all delegates from a primary account by using the RemoveDelegates operation.

    Collection<DelegateUserResponse> RemoveDelegates()
    {
      // Bind to the service by using the primary e-mail address credentials.
      ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
      service.Credentials = new NetworkCredential(user1Name, user1Password, emailDomain);
      service.AutodiscoverUrl(user1Email);

      // Create a list to hold the new delegates to remove.
      List<UserId> delegatesToRemove = new System.Collections.Generic.List<UserId>();
      
      // Create a Mailbox object that represents the primary user.
      Mailbox mailbox = new Mailbox(user1Email);

      // Call the GetDelegates method to get the delegates of the primary user.
      DelegateInformation delegateInformation = service.GetDelegates(mailbox, true);

      // Collect the user IDs of the delegates to remove.
      foreach (DelegateUserResponse delegateUserResponse in delegateInformation.DelegateUserResponses)
      {
        delegatesToRemove.Add(delegateUserResponse.DelegateUser.UserId);
      }

      // Call the RemoveDelegates method to remove the delegates from the primary user's mailbox.
      Collection<DelegateUserResponse> response = service.RemoveDelegates(mailbox, delegatesToRemove);

      return response;
    }

The RemoveDelegates method in the code example returns a list of DelegateUserResponse objects, one for each delegate that was removed from the primary account. Examine the DelegateUserResponse objects to determine the success or failure for each delegate.

Compiling the code

For information about compiling this code, see Getting started with the EWS Managed API 2.0.

Robust programming

  • Write appropriate error handling code for common search errors.

  • Review the client request XML that is sent to the Exchange server.

  • Review the server response XML that is sent from the Exchange server.

  • Set the service binding as shown in Setting the Exchange service URL by using the EWS Managed API 2.0. Do not hard code URLs because if mailboxes move, they might be serviced by a different Client Access server. If the client cannot connect to the service, retry setting the binding by using the AutodiscoverUrl(String) method.

  • Set the target Exchange Web Services schema version by setting the requestedServerVersion parameter of the ExchangeService constructor. For more information, see Versioning EWS requests by using the EWS Managed API 2.0.

Security

  • Use HTTP with SSL for all communication between client and server.

  • Always validate the server certificate that is used for establishing the SSL connections. For more information, see Validating X509 certificates by using the EWS Managed API 2.0.

  • Do not include user names and passwords in trace files.

  • Verify that Autodiscover lookups that use HTTP GET to find an endpoint always prompt for user confirmation; otherwise, they should be blocked.