检索显示异常行为的日历项(Outlook API,WebDAV)
我们正在编写一个MS Outlook插件。为了满足我们的业务逻辑,它应该检查某些日期之间的所有约会。从日历中检索所有项目时,我们遇到了一些问题。我们尝试了两种选择: Outlook API。我们使用MSDN中描述的标准逻辑-按[开始]对项目进行排序,设置IncludeRecurrences为True并运行对日历项目的Find \ Restrict查询,例如此处。在我们的测试环境中,它运作良好。但是,在我们客户的环境中:对于定期约会,开始日期和结束日期设置为“主约会”的相应日期。例如,在某个房间的日历中,我们有一个在1月创建的每周约会,如果我们尝试查找8月的所有项目,则除此定期约会外,我们还有其他4个项目,但它们的开始日期和结束日期设置为1月。 。但是Outlook在同一日历中显示正确的日期... 非常糟糕,但是我们仍然有WebDAV!我们编写了一个简单的测试应用程序,并尝试使用WebDAV查询日历中的所有项目。当然,我们并没有重新发明轮子,只是从文档中粘贴了代码。前一个问题已解决,但下一个问题出现了:它不会返回大约六个月前创建的重复项目。我不知道-没有参数限制“旧”物品! 怎么了?我们缺少重要的东西吗? 技术详细信息:Exchange 2003,Outlook 2003-2010。坦白说,如果打开“缓存Exchange模式”,第一个错误就会消失,但是我们不能这样做。 var nameSpace = application.GetNamespace("MAPI"); var recepient = nameSpace.CreateRecipient(roomEMail); recepient.Resolve(); var calendar = nameSpace.GetSharedDefaultFolder(recepient, OlDefaultFolders.olFolderCalendar); var filter = string.Format("[Start]<'{1}' AND [End]>'{0}'", dateFrom.ToString("dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture), dateTo.ToString("dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture) ); var allItems = calendar.Items; allItems.Sort("[Start]"); allItems.IncludeRecurrences = true; var _item = …