如何为用户的收件箱和日历资源同步客户端

Posted

技术标签:

【中文标题】如何为用户的收件箱和日历资源同步客户端【英文标题】:How to sync client for inbox and calendar resource of a user 【发布时间】:2014-12-01 20:30:39 【问题描述】: 我正在尝试了解 Caldav 的事件安排 我使用 CalendarServer

使用 mac iCal 客户端,“userA”创建了一个事件并邀请了“userB”

此时,'userB' 在他的集合中有两个相同事件的项目:

收件箱 - 来自“userA”的请求 ------------- /userB/inbox/123456789.ics 日历 - 为用户创建的服务器 ---------/userB/calendar/987654321.ics

它们都指向同一个事件。

对于 userB 客户端,我需要同时访问这两个项目:

   * To Delete from 'Inbox' when userB "Accepts"
   * To update 'Calendar' when userB "Accepts"

现在我向'inbox' endpoint'calendar' endpoint 发送两个不同的请求,这会导致客户端出现同步问题

如何在对 Caldav 服务器的单个请求中访问 userB 的两个 .ics 文件??

请指点。

【问题讨论】:

【参考方案1】:

截至今天,还没有 RFC 标准的方法来删除收件箱项目并在 DAV 中的单个 HTTP 请求中更新日历资源。

有一个 Apple 扩展可以进行批量更改:Calendar Server Bulk Change Requests for *DAV Protocols。但我不会将它用于这个特定的问题。

自动调度 CalDAV 服务器收件箱中的 iTIP 资源在调度中不起任何作用。将其视为通知。因此,它实际上不会导致同步问题。 由客户端(是否自动调度)确定收件箱项目是否仍然有效并且需要显示(或可以删除​​)。例如,如果事件资源有效,则显示“needs-action”iTIP 通知是没有意义的。

您也可以查看SEQUENCE 属性,不过最好将 iTIP 与实际事件进行比较。

【讨论】:

以上是关于如何为用户的收件箱和日历资源同步客户端的主要内容,如果未能解决你的问题,请参考以下文章

接受请求后 Outlook 日历从收件箱中消失

收件箱中的Outlook日历事件视图

获取 Outlook 日历邮件

如何向300多名用户大量添加Gmail API权限?

使用 Express/MongoDB 构建收件箱系统

使用php-imap查询操作邮件收件箱