如果我使用EWS创建会议,我会获得ID,稍后可以使用该ID删除或更新它。它运行良好,并将所有通知发送给与会者。
但是,如果我从FindItems请求中获得ID,它会返回一个不同的ID。这个新ID的工作方式不同。我可以更新和删除项目,但没有人收到通知。SendMeetingInvitations设置为CalendarItemCreateOrDeleteOperationType。SendToAll和SaveCopy,但没有帮助。
我尝试了EWS托管API和EWS。两者的工作原理相同。
不幸的是,我无法在某些系统中保存第一个ID,因为我需要管理的一些会议是从Outlook创建的。
有什么想法吗?我如何获得正确的ID,或者我如何让Exchange在我的情况下自动更新通知?
这就是我如何获得错误的ID:
FolderIdType folderId = GetCalendarFolderId(meetingRoomEmail);
FindItemType findItemType = new FindItemType();
findItemType.ParentFolderIds = new BaseFolderIdType[] {folderId};
findItemType.ItemShape = new ItemResponseShapeType();
findItemType.ItemShape.BaseShape = DefaultShapeNamesType.IdOnly;
ArrayOfRealItemsType arrayOfRealItemsType =
(ArrayOfRealItemsType) ((FindItemResponseMessageType) responseMessage).RootFolder.Item;
ItemType[] itemIdsOnly = arrayOfRealItemsType.Items;
Update1:问题似乎与我在资源(会议室)日历文件夹中查找而根项目在组织者的日历文件夹中有关。如果我的猜测是正确的,请告诉我如何通过会议室文件夹中的项目找到组织者文件夹中的相关项目。
PS:Exchange 2010 SP3
是的,您的更新是有意义的。您需要更新组织者的副本,以便通知所有人。您应该能够使用ICalUid
属性来匹配它们。