我正在开发一个针对Office 365的应用程序,该应用程序需要访问可供登录用户使用的共享(委派)日历。 我根据documentation使用EWS API - 明确指定日历所有者的SMTP电子邮件地址,如下所示:
<m:ParentFolderIds>
<t:DistinguishedFolderId Id="calendar">
<t:Mailbox>
<t:EmailAddress>primary@contoso.com</t:EmailAddress>
</t:Mailbox>
</t:DistinguishedFolderId>
</m:ParentFolderIds>
这适用于与用户签名的用户共享的日历,但不适用于其他组织的日历。我总是得到相同的信息:
<m:MessageText>The SMTP address has no mailbox associated with it.</m:MessageText>
<m:ResponseCode>ErrorNonExistentMailbox</m:ResponseCode>
与此同时,我可以在OWA UI中看到这样的日历(及其约会) - &#34;其他日历&#34;部分。
这是EWS API / Office 365的限制,还是我遗漏了什么?
答案 0 :(得分:1)
这是EWS的限制。当您使用EWS访问共享日历时,它实际上会进入服务器并打开所有者的邮箱。当&#34;分享者#34;在你的组织之外,它无法做到这一点。您看到的错误实际上是因为EWS尝试将所有者的电子邮件地址解析为组织内的邮箱并失败。
通过发布方法在组织外部进行共享,这样您的Outlook或OWA客户端就不必直接访问所有者的邮箱。 EWS不知道如何访问这些信息。
从共享消息中,您可以将其作为ICS Feed进行访问,但您需要以某种方式获取该Feed的网址。它是在所有者共享日历时发送给用户的初始消息。