Exchange Web服务托管API:访问其他用户项

Luk*_*uke 11 c# exchange-server web-services exchangewebservices ews-managed-api

是否可以访问除登录用户之外的其他Exchange帐户的文件夹和项目?

我可以通过Exchange Web服务托管API执行此操作吗?

Ole*_*leg 15

是的,这是可能的,但您应该知道其他用户的密码或以某种方式获取此凭据(NetworkCredential对象).你代码的典型第一行可能是

ExchangeService myService = new ExchangeService (ExchangeVersion.Exchange2007_SP1);
myService.Credentials = new NetworkCredential ("user@mycorp.local", "P@ssword00");
Run Code Online (Sandbox Code Playgroud)

因此,您可以使用其他作为当前用户的帐户访问Exchange Server Web服务.有关更多信息,请参阅ExchangeService对象描述.

如果您是管理员,则可以通过SMTP地址进行用户模拟.

  • @Luke:我的回答中的最后一句话描述了如何做到这一点.作为"superadmin",您可以仅通过SMTP地址模拟任何用户,而无需提供有关其密码的任何信息.再看一次http://msdn.microsoft.com/en-us/library/dd633680(EXCHG.80).aspx. (2认同)

Pr0*_*r0n 5

以下是您无需假冒或不知道凭据即可执行此操作的方法。

        ExchangeService _service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
        //CREDENTIALS OF AN ACCOUNT WHICH HAS READ ACCESS TO THE CALENDAR YOU NEED
        _service.Credentials = new WebCredentials(username, password);
        _service.Url = new Uri(serviceURL);
        
        SearchFilter.SearchFilterCollection searchFilter = new SearchFilter.SearchFilterCollection();
        searchFilter.Add(new SearchFilter.IsGreaterThanOrEqualTo(AppointmentSchema.Start, DateTime.Now.AddDays(-1)));
        searchFilter.Add(new SearchFilter.IsLessThanOrEqualTo(AppointmentSchema.Start, DateTime.Now.AddDays(2)));
        ItemView view = new ItemView(50);
        view.PropertySet = new PropertySet(BasePropertySet.IdOnly, AppointmentSchema.Subject, AppointmentSchema.Start, AppointmentSchema.AppointmentType, AppointmentSchema.End);
        
        //THIS NEXT LINE!!!
        var calendarSearch = new FolderId(WellKnownFolderName.Calendar, new Mailbox("email@ofsomemailbox.com"));
        var appointments = _service.FindItems(calendarSearch, searchFilter, view);
Run Code Online (Sandbox Code Playgroud)