Outlook ExchangeServices.GetDelegates的结果在通过ECP将代理添加到邮箱时未反映更改

Outlook ExchangeServices.GetDelegates的结果在通过ECP将代理添加到邮箱时未反映更改,outlook,office365,exchange-server,exchangewebservices,ews-managed-api,Outlook,Office365,Exchange Server,Exchangewebservices,Ews Managed Api,注意:Exchange 2013内部部署和Exchange Online(Office 365)都观察到了这种行为 我正在尝试获取特定邮箱的代理列表。如果已使用和添加或删除这些委托,则此操作非常有效-我得到的对象包含作为委托添加的邮箱的预期列表 使用Microsoft.Exchange.WebServices.Data; 使用制度; 命名空间QueryDelegateAccess { 班级计划 { 静态void Main(字符串[]参数) { 尝试 { ExchangeService服务=初始化

注意:Exchange 2013内部部署和Exchange Online(Office 365)都观察到了这种行为

我正在尝试获取特定邮箱的代理列表。如果已使用和添加或删除这些委托,则此操作非常有效-我得到的对象包含作为委托添加的邮箱的预期列表

使用Microsoft.Exchange.WebServices.Data;
使用制度;
命名空间QueryDelegateAccess
{
班级计划
{
静态void Main(字符串[]参数)
{
尝试
{
ExchangeService服务=初始化服务();
字符串emailAddressToImpersonate=”MailboxWithDelegates@example.com";
service.ImpersonatedUserId=新的ImpersonatedUserId(ConnectingIdType.SmtpAddress,emailAddressToImpersonate);
邮箱邮箱=新邮箱(emailAddressToImpersonate);
Console.WriteLine($“对“{emailAddressToImpersonate}”具有委托访问权限的邮箱:”;
//每次我通过ExchangeServices.AddDelegates或ExchangeServices.RemoveDeleteGates添加或删除代理时,
//更改反映在控制台输出中。
while(true)
{
DelegateInformation di=service.GetDelegates(邮箱,true);
foreach(di.DelegateUserResponses中的DelegateUserResponseDelegateMailbox)
{
if(delegateMailbox.Result!=ServiceResult.Error)
{
Console.WriteLine(delegateMailbox.DelegateUser.UserId.DisplayName);
}
}
Console.WriteLine();
系统线程线程睡眠(2000);
}
}
捕获(例外e)
{
Console.Error.WriteLine(“发生错误:”+e);
}
最后
{
Console.WriteLine(“按任意键终止程序”);
Console.ReadKey();
}
}
专用静态ExchangeService InitializeService()
{
ExchangeService服务=新的ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Credentials=新的WebCredentials(“MailboxWithImpersonationRole@example.com“,”密码“);
service.Url=新的Uri(“https://outlook.office365.com/EWS/Exchange.asmx“”;//或在Exchange内部部署时通过自动发现检索Url
回程服务;
}
}
}
但是,如果已通过Exchange控制面板(Exchange管理员向邮箱添加代理的常用方式)通过转到邮箱权限并在“代表发送”部分中添加代理来添加代理,则我获得的
DelegateInformation
对象不包含此代理。只有添加了代理的邮箱所属的人员启动Outlook并通过文件>帐户设置>代理访问打开/关闭任何代理条目时,列表才会更新

这种行为让我困惑,让我觉得我还缺少一个额外的“冲洗”步骤。为了可靠地检索通过ECP添加的代理,我需要做什么

但是,如果已通过Exchange控制面板(Exchange管理员向邮箱添加代理的常用方式)通过转到邮箱权限并在“代表发送”部分添加代理来添加代理,则我获得的DelegateInformation对象不包含此代理


Outlook委派和您在ECP中所做的是两件不同的事情,例如,您在ECP中所做的只是授予另一个用户代表发送的权限。Outlook委派权限(同时也包括该权限)具有邮箱文件夹权限和潜在的日历转发规则。它是一个客户端驱动的进程,将配置信息存储在邮箱本身中,只有在ECP任务正在修改基础AD权限属性时,才能通过邮箱API创建/删除配置信息

谢谢你,格伦。您知道是否有一种方法可以让只有ECP访问权限的管理员也应用您描述的邮箱文件夹权限?如果不是,是否可以从Exchange管理控制台执行此操作?如果希望它通过Outlook(作为Outlook代理)可见,则需要通过EWS或Mapi的API调用执行。可以使用Add-MailboxFolderPermission通过powershell应用文件夹权限,但没有用于此的ECP gui元素。