Adding delegate with calendar access using Exchange Web Services?
- by BryanG
I have a set up where I need to add a delegate to various user calendars programmatically. Using a sample from MDSN, I've gotten as far as trying to add the delegate, but after the call to the service binding, I get nothing back...no success or fail....nothing.
How I create the service binidng:
// Initialize the service binding
serviceBinding = new ExchangeServiceBinding();
serviceBinding.Credentials = new NetworkCredential(Properties.Settings.Default.UserName, Properties.Settings.Default.Password, Properties.Settings.Default.Domain);
// A production application should call the autodiscover service to locate the service binding url
serviceBinding.Url = Properties.Settings.Default.EWSUrlEndPoint;
serviceBinding.RequestServerVersionValue = new RequestServerVersion();
serviceBinding.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2007_SP1;
serviceBinding.AllowAutoRedirect = true;
and the delegate addition:
static void AddDelegate(string email)
{
// Create the request.
AddDelegateType request = new AddDelegateType();
// Identify the agent's mailbox.
request.Mailbox = new EmailAddressType();
request.Mailbox.EmailAddress = email;
// add the exch_integration user as a delegate
request.DelegateUsers = new DelegateUserType[1];
request.DelegateUsers[0] = new DelegateUserType();
request.DelegateUsers[0].UserId = new UserIdType();
request.DelegateUsers[0].UserId.PrimarySmtpAddress = "[email protected]";
// Specify the permissions that are granted to exch_integration
request.DelegateUsers[0].DelegatePermissions = new DelegatePermissionsType();
request.DelegateUsers[0].DelegatePermissions.CalendarFolderPermissionLevel = DelegateFolderPermissionLevelType.Author;
request.DelegateUsers[0].DelegatePermissions.CalendarFolderPermissionLevelSpecified = true;
// Specify whether the agent recieves meeting requests.
request.DeliverMeetingRequests = DeliverMeetingRequestsType.DelegatesAndSendInformationToMe;
request.DeliverMeetingRequestsSpecified = true;
try
{
// Send the request and get the response.
AddDelegateResponseMessageType response = serviceBinding.AddDelegate(request);
DelegateUserResponseMessageType[] responseMessages = response.ResponseMessages;
// One DelegateUserResponseMessageType exists for each attempt to add a delegate user to an account.
foreach (DelegateUserResponseMessageType user in responseMessages)
{
Console.WriteLine("Results of adding user: " + user.ResponseClass.ToString());
Console.WriteLine(user.DelegateUser.UserId.DisplayName);
Console.WriteLine(user.DelegateUser.UserId.PrimarySmtpAddress);
Console.WriteLine(user.DelegateUser.UserId.SID);
}
Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
}
}
The response nothing which must mean that the AddDelegate call isn't hitting the server properly, but I'm not sure. Thanks.