我们正在写一个微软的Outlook插件,以满足我们的业务逻辑应检查所有date之间的约会,我们遇到几个问题从日历中检索所有项目。 我们尝试了2个选项: Outlook API。 我们使用MSDN中描述的标准逻辑 – 按[Start]对项目进行sorting,将IncludeRecurrences设置为True,并对日历项目运行Find \ Restrict查询(如http://msdn.microsoft.com/zh-cn/library/office/ aa220093(v = office.11).aspx )。 它在我们的testing环境中工作正常。 但是,在我们客户的定期约会环境中,开始和结束date被设置为“主约会”的相应date。 例如,在某个房间的日历中,我们每周都有一个在一月份创build的约会,如果我们在八月份试图find所有的项目,我们就会获得这个周期性约会的4个项目,但是他们的开始和结束date都设置为一月。 但Outlook在相同的日历中显示正确的date… 非常糟糕,但我们仍然有WebDAV! 我们编写一个简单的testing应用程序,并尝试使用WebDAV从日历中查询所有项目。 当然,我们不会重新发明轮子,只需从文档粘贴代码 – http://msdn.microsoft.com/en-us/library/exchange/aa123570(v=exchg.65).aspx 。 上一个问题解决了,但是下一个问题出现了:它不会返回创build超过大约6个月前的重复项目。 而我无法find一个线索 – 没有任何参数限制“旧”的项目! 哪里不对? 我们错过了重要的东西吗? 技术细节:Exchange 2003,Outlook 2003-2010。 坦白说,如果我们打开cachingExchange模式,第一个错误消失,但我们不能这样做。 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", […]