当用户将事件添加到在线日历中时,他们也可以添加到outlook日历中(同步)。显然,使用PHP构建的网站无法直接与桌面应用程序集成,所以我正在寻找其他选择。
我找到的选项:
- 使用PHP ICAL库创建一个.ics文件,用户可以下载并安装。不是最方便用户使用的方法,可能会起作用
- 使用SharePoint或exchange服务器,但以前没有使用Microsoft技术的经验,因此不理想
- 使用谷歌日历和Zend库(gdata),创建在线日历并向其中添加事件。然后使用谷歌日历同步工具,用户可以将在线日历同步到outlook。但这里的问题是,所有用户都需要一个gmail帐户才能使用同步工具,当你的网站上有成千上万的用户时,这并不理想。除非我创建一个全球gmail帐户,并在该帐户上创建许多日历,如果可能的话
问题:
- 有没有付费或免费(理想情况下)的outlook插件可以实现这一点
- 有什么web服务/API可以实现这一点吗
- 还有其他想法或解决方案吗
Office 365附带一个REST API,可用于读取/写入日历。这里有一些相关文档。http://msdn.microsoft.com/office/office365/api/calendar-rest-operations
或者,EWS托管API可能能够帮助您:http://msdn.microsoft.com/en-us/library/office/dd633696(v=exchg.80).aspx和http://msdn.microsoft.com/en-us/library/office/dd633702(v=exchg.80).aspx
您可以通过让outlook订阅在线日历来实现这一点。
使用phpicalendar,您可以让其他客户端订阅您的日历(此处)
您可能需要调整生成的.ics文件,以包括X-PUBLISHED-TTL-订阅日历的推荐更新间隔
要获得日历事件,请执行以下步骤:
- 登录日历
- 在工具栏上,单击"共享"
- 选择要导出/嵌入的日历
- 单击获取链接
- 在"显示事件详细信息"下(单击"创建")注意:如果已经执行了第5步,只需跳过它,然后单击"链接到事件详细信息"
- 复制您需要的链接,并将其粘贴到所需的程序/网站上
使用EWS交换Web服务来实现这一点。如果是一个用户数量为的网站,则您需要在exchange服务器中创建OU,并添加一个对DL中的所有帐户都具有读取权限的管理员用户。EWS公开了端点,在这些端点中,u可以获取日历邮件、添加读取并执行所有类型的操作。
基于Rahul的想法,但使用不同的方法-微软提供了类似于;RSS馈送";每次获得URL时都会自动更新,除非它是";ICS";事件数据:
-
打开Outlook Web Access(OWA),例如,如果您使用的是microsoft.com帐户,则URL可能为https://outlook.live.com/calendar/(如果您使用其他Microsoft 365帐户,URL可能会有所不同)
-
在右上角,单击设置图标
-
单击查看所有Outlook设置
-
单击日历>共享日历>在"发布日历"下,选择日历,然后在"选择权限"下,根据需要进行选择,然后单击"发布"
-
它将为您提供HTML和ICS链接。复制ICS链接URL。
-
使用您最喜欢的编程语言/工具/软件定期使用GET方法对步骤5中获得的URL进行HTTPS请求(使用CURL或AJAX或其他HTTP获取)。您将返回一组ICS格式的日历数据。根据需要使用它。您可以从其他地方找到一些预先编写的代码,为您解析ICS数据,或者如果必须的话,您可以手动创建自己的解析器代码。