我们有一个现有的实施方案,可以通过EWS托管API推送通知订阅Office 365 Exchange Online中的用户日历。
PushSubscription pushSubscription = exchangeService.SubscribeToPushNotifications(
new FolderId[] { WellKnownFolderName.Calendar },
new Uri(callbackEndpoint), statusFrequency, null,
EventType.Created, EventType.Deleted, EventType.Modified,
EventType.Moved, EventType.Copied, EventType.FreeBusyChanged);
除了subscription not being able to last forever之外,它还没有问题;在日历上安排的约会确实会向我们的网络服务发送通知。
现在我们不想从用户邮箱的角度监控事件,而是想知道是否可以从会议室资源邮箱的角度进行订阅。
// Set room mailbox address.
exchangeService.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, roomAddress);
PushSubscription pushSubscription = exchangeService.SubscribeToPushNotifications(
new FolderId[] { WellKnownFolderName.Calendar },
new Uri(callbackEndpoint), statusFrequency, null,
EventType.Created, EventType.Deleted, EventType.Modified,
EventType.Moved, EventType.Copied, EventType.FreeBusyChanged);
不幸的是,事情并非如此简单,
请求失败。远程服务器返回错误:(457) https://autodiscover-s.outlook.com/owa/domain.onmicrosoft.com
我找不到任何深入的材料来解释457真正的错误,以及如何克服这个问题。
此外,我还没有找到任何其他人尝试订阅资源邮箱。是因为它完全不可能,或者根本没有人发现需要吗?
更新
尝试使用EWSEditor tool查看可以嗅出哪些额外细节;似乎冒充房间邮箱需要某种特殊许可。
异常详细信息:消息:该帐户没有权限 冒充所请求的用户。类型: Microsoft.Exchange.WebServices.Data.ServiceResponseException来源: Microsoft.Exchange.WebServices ErrorCode:ErrorImpersonateUserDenied ErrorMessage:该帐户没有模仿的权限 请求的用户。堆栈跟踪:at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ProcessWebException(引发WebException webException)at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest 请求) Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest&安培; 请求) Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest 1.Execute() 在 Microsoft.Exchange.WebServices.Data.ExchangeService.InternalConvertIds(IEnumerable 1 id,IdFormat destinationFormat,ServiceErrorHandling errorHandling)
在 Microsoft.Exchange.WebServices.Data.ExchangeService.ConvertIds(IEnumerable 1 id,IdFormat destinationFormat)at EWSEditor.Common.Extensions.ExchangeServiceExtensions.TestExchangeService(ExchangeService 服务)
我尝试在Office 365管理界面中为邮箱委派分配完全访问权限,但这似乎没有任何好处。
答案 0 :(得分:0)
看起来实现这一目标的关键是启用对指定服务帐户的模拟。
http://msdn.microsoft.com/en-us/library/bb204095.aspx
一旦为组织帐户和指定的用户帐户完成此操作,就可以与带模拟的会议室邮箱和订阅进行交互。