Calendars and EWS in Exchange

了解 Exchange 中的日历、日历文件夹和项目、约会和会议。

你可能熟悉电子邮件客户端(如 Outlook)中的许多日历功能,这些功能使你能够跟踪约会、安排会议、检查人员空位、邀请与会者以及更改或取消会议。

Exchange 中的日历相关功能与 Outlook 等客户端中显示的功能稍有不同。 Exchange 中的 EWS 使你可以执行创建、存储、发送或更改信息等操作,而不是显示信息。 若要使用 EWS 处理日历,需要熟悉信息存储、时间、重复周期和消息流等概念。 更具体地说,你需要熟悉以下内容:

  • 日历文件夹、日历项和日历视图

  • 会议请求、响应、日程安排、与会者、资源、会议室和可用性

  • 会议和约会的持续时间、时区以及开始和结束时间

  • 定期系列、重复模式、异常以及单实例约会和会议

幸运的是,EWS 和 EWS 托管 API 提供了一组丰富的操作和方法,使你能够执行各种与日历相关的任务。 例如,使用 EWS 托管 API,只需几行代码即可创建会议并向与会者发送邀请,如以下示例所示。

            Appointment meeting = new Appointment(service);
            // Set the properties on the meeting object to create the meeting.
            meeting.Subject = "Team building exercise";
            meeting.Body = "Let's learn to really work as a team and then have lunch!";
            meeting.Start = DateTime.Now.AddDays(2);
            meeting.End = meeting.Start.AddHours(2);
            meeting.Location = "Conference Room 12";
            meeting.RequiredAttendees.Add("Mack.Chaves@contoso.com");
            meeting.RequiredAttendees.Add("Sadie.Daniels@contoso.com");
            meeting.OptionalAttendees.Add("Magdalena.Kemp@contoso.com");
            meeting.ReminderMinutesBeforeStart = 60;
            // Send the meeting request
            meeting.Save(SendInvitationsMode.SendToAllAndSaveCopy);

日历文件夹和日历项

日历文件夹包含日历项。 日历文件夹具有 IPF 文件夹类。约会, 和 只能包含由 ItemClass EWS 托管 API 属性定义的项,该属性与 Appointment 类对象或 EWS CalendarItemType 元素相关联。

“日历”文件夹中的项目与邮箱中其他文件夹中的项目稍有不同,因为定期系列中的事件和重复序列的异常不是邮箱中的实际项目,而是在内部存储为定期主控形状的附件。 因此,若要检索给定日期范围中的所有约会,需要使用日历视图。 若要详细了解如何检索约会和日历视图,请参阅 在 Exchange 中使用 EWS 获取约会和会议

会议和约会

会议和约会之间的基本区别在于会议有与会者,而约会没有。 在内部,Exchange 对会议和约会使用相同的对象。 使用 EWS 托管 API Appointment 类 或 EWS CalendarItem 元素来处理会议和约会。

约会和会议都可以是单个实例或 定期系列的一部分,但由于约会不包括与会者、会议室或资源,因此不需要发送消息。

由于会议包括发送和响应请求和更新,因此它们不仅涉及访问日历文件夹中的项目。 它们还有一个关联的工作流。 必须在与会者有空时安排会议,并且还可能涉及预订会议室或投影仪或其他设备等资源。

会议工作流通常涉及以下步骤:

  1. 创建会议并使用开始和结束时间、位置和消息正文等信息进行填充。
  2. 创建潜在与会者、资源和会议室的列表。
  3. 检查与会者的可用性状态。
  4. 会议请求将发送给与会者。
  5. 与会者回复会议时,是否打算参加。 与会者还可以为会议建议新的时间。
  6. 可以取消或更新会议,这通常会触发要发送给与会者的新消息。

日历和时间

与时间相关的功能是日历不可或缺的一部分。 约会和会议具有开始和结束时间、持续时间和其他与时间相关的属性,例如创建、发送和接收消息的时间。 可以根据开始和结束时间从日历文件夹中检索现有的约会和会议。 定期序列有开始和结束。 会议在给定的时区举行,这在全球经济中越来越重要。

时间以协调世界时 (UTC) 存储在 Exchange 服务器内部。 Exchange 根据客户端设置将它们转换为本地时区。 DateTime 属性的范围限定为计算机的本地时区。

定期系列

定期约会或会议系列由定期主控服务器、一组事件项和一组异常项(可选)组成。 定期信息存储在定期主项目上。 RecurrenceingMasterItemId EWS 元素与系列中的事件和异常相关联,或者可以使用 Appointment.BindToRecurringMaster EWS 托管 API 方法获取定期主控形状。 使用系列的实例,可以找到与系列关联的所有元素和信息。

请注意,定期属性存在于所有日历项上,但它们仅在定期主项目上填充。 除了一个系列中所有事件的索引外,定期主控形状还引用修改和删除的次数以及序列的重复模式, (例如每日、每周、每月或每年) 。

本节内容

另请参阅