如何访问来自其他组织的委派日历
How to access delegated calendars from other organization
我正在开发一个面向 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 - "Other calendars" 部分中看到此类日历(及其约会)。
这是 EWS API/Office 365 的限制,还是我遗漏了什么?
这是 EWS 的限制。当您使用 EWS 访问共享日历时,它实际上会转到服务器并打开所有者的邮箱。当 "sharer" 在您的组织之外时,它不能这样做。您看到的错误实际上是因为 EWS 尝试将所有者的电子邮件地址解析为组织内部的邮箱但失败了。
在组织外部共享是通过发布方法完成的,因此您的 Outlook 或 OWA 客户端永远不必直接访问所有者的邮箱。 EWS 不知道如何访问此信息。
从共享消息来看,您似乎可以将其作为 ICS 提要访问,但您需要以某种方式获取该提要的 URL。它在所有者共享日历时发送给用户的初始消息中。
我正在开发一个面向 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 - "Other calendars" 部分中看到此类日历(及其约会)。
这是 EWS API/Office 365 的限制,还是我遗漏了什么?
这是 EWS 的限制。当您使用 EWS 访问共享日历时,它实际上会转到服务器并打开所有者的邮箱。当 "sharer" 在您的组织之外时,它不能这样做。您看到的错误实际上是因为 EWS 尝试将所有者的电子邮件地址解析为组织内部的邮箱但失败了。
在组织外部共享是通过发布方法完成的,因此您的 Outlook 或 OWA 客户端永远不必直接访问所有者的邮箱。 EWS 不知道如何访问此信息。
从共享消息来看,您似乎可以将其作为 ICS 提要访问,但您需要以某种方式获取该提要的 URL。它在所有者共享日历时发送给用户的初始消息中。