EWS将附件分为两组:文件附件和项目附件


项目附件:附加到另一个强类型EWS项目的强类型EWS项目,例如电子邮件和日历项目。

文件附件:任何文件,例如.txt,.jpg,.zip,.pdf,甚至是.msg文件。文件附件只有一些属性,其中一个属性是文件的base-64编码内容。

引用附件:文件提供程序引用的任何附件,例如位于云中的文件。附件可以来自多个提供者。


内联附件


内联附件是一种特殊的附件。文件附件和项目附件都可以是内联附件。内联附件显示为正文内容的一部分,并保留其相对于项目中其余内容的位置。


EWS日历功能,自动发送会议通知示例


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

  1. 日历文件夹,日历项和日历视图

  2. 会议请求,响应,日程安排,与会者,资源,房间和可用性

  3. 会议和约会的持续时间,时区以及开始和结束时间

  4. 重复序列,重复模式,异常以及单实例约会和会议

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("[email protected]");
meeting.RequiredAttendees.Add("[email protected]");
meeting.OptionalAttendees.Add("[email protected]");
meeting.ReminderMinutesBeforeStart = 60;
// Send the meeting request
meeting.Save(SendInvitationsMode.SendToAllAndSaveCopy);


在Exchange中委派访问权限和EWS


https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/delegate-access-and-ews-in-exchange


Exchange标识符及EWS API标识符


Exchange存储中的每个对象都具有唯一标识符。您可以使用对象的标识符来引用对象并将其与其他对象区分开来。您可能使用的两个最常见的标识符是文件夹和项标识符。

为了理解标识符及其对应用程序的重要性,了解Exchange中对象之间的关系很有帮助。当EWS托管API或EWS应用程序与Exchange通信时,您将使用包含邮箱,文件夹和项目对象的对象层次结构。商店可以是这些对象类型中的任何一种。最常见的是,它是Exchange服务器上的邮箱,但它也可以是Exchange服务器上的公用文件夹。(请记住,在Exchange Online,作为Office 365的一部分的Exchange Online以及从Exchange 2013开始的Exchange版本中,公用文件夹只是另一种类型的邮箱,而不是另一种类型的存储。)存储包含文件夹和文件夹包含项目,每个文件夹和项目都有一个标识符,如下图所示。

学习笔记-Exchange Web Service API-开发_第1张图片

EWS用于文件夹和项目的标识符称为EWS标识符或EwsIds。EWSIds可以在EWS中的许多不同对象中找到,但是对于不同的对象被称为不同的对象。因为您可能在应用程序中使用这些对象,所以您需要了解这些对象的标识符与EwsId的关系。

EWS中的标识符也适用于EWS托管API。在EWS托管API中,标识符是对象的属性,并在内部进行管理以映射到EWS元素。


模拟访问EWS


什么时候应该选择模拟而不是委托或文件夹权限?

  • 如果要为用户提供对文件夹的访问权限但不希望用户具有“代表发送”权限,请使用文件夹权限。

  • 如果要授予一个用户代表另一个用户执行工作的权限,请使用委派访问权限。通常,这是一对一或一对一的权限 - 例如,管理管理员日历的单个管理助理,或管理一组会议室的日历的单个房间调度程序。

  • 当您拥有需要访问多个邮箱并“充当”邮箱所有者的服务应用程序时,请使用模拟。

当您处理多个邮箱时,模拟是最佳选择,因为您可以轻松地授予一个服务帐户访问数据库中每个邮箱的权限。当您仅授予少数用户访问权限时,委派和文件夹权限最佳,因为您必须分别为每个邮箱添加权限。

学习笔记-Exchange Web Service API-开发_第2张图片

模拟是连接到Exchange Online,作为Office 365的一部分的Exchange Online和Exchange的本地版本并执行操作的应用程序的理想选择,例如归档电子邮件,为度假用户自动设置OOF或任何其他需要该操作的任务该应用程序充当邮箱的所有者。当应用程序使用模拟发送邮件时,电子邮件似乎是从邮箱所有者发送的。收件人无法知道服务帐户发送的邮件。另一方面,委派授予另一个邮箱帐户代表邮箱所有者的权限。当委托发送电子邮件时,“from”值标识邮箱所有者,“sender”值标识发送邮件的委托。

配置模拟:https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-configure-impersonation


收件箱规则


让我们面对现实:并非每封电子邮件都是平等的。许多用户转向收件箱规则以帮助削减邮件,并使其收件箱变得更加美好。使用Exchange Web服务(EWS),您的应用程序可以承担规则的强大功能。

EWS托管API提供用于处理规则的ExchangeService.GetInboxRulesExchangeService.UpdateInboxRules方法。EWS提供了用于处理规则的GetInboxRulesUpdateInboxRules操作。但请注意,使用收件箱规则时,EWS托管API和EWS具有以下限制:

  • EWS无法访问或创建“仅限客户端”的规则或规则,这些规则或规则在Outlook中设置为“仅在此计算机上”运行。

  • 要使用EWS更改当前规则集,您必须删除Outlook规则BLOB(如果存在)。这意味着使用EWS修改规则会删除以前使用Outlook关闭(禁用)的所有规则。

https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/inbox-management-and-ews-in-exchange


EWS通知订阅类型


您可以使用EWS托管API和Exchange Web服务(EWS)订阅,以便在邮箱中或邮箱中的一个或多个文件夹中发生事件时接收通知。提供三种订阅类型:流通知,拉取通知和推送通知。这些订阅类型中的每一种都使用不同的技术来接收或检索通知。

学习笔记-Exchange Web Service API-开发_第3张图片

通知订阅返回的事件类型

学习笔记-Exchange Web Service API-开发_第4张图片

流式通知

学习笔记-Exchange Web Service API-开发_第5张图片

拉动通知

学习笔记-Exchange Web Service API-开发_第6张图片

推送通知

学习笔记-Exchange Web Service API-开发_第7张图片


EWS同步如何工作


初始同步的模式如下

学习笔记-Exchange Web Service API-开发_第8张图片

正在运行中的同步模式(增量同步)

学习笔记-Exchange Web Service API-开发_第9张图片

更多关于同步的最佳实践请参考:https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/mailbox-synchronization-and-ews-in-exchange


Exchange中EWS中的持久应用程序设置


用户配置对象是存储EWS客户端应用程序配置设置的最佳选择。https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/persistent-application-settings-in-ews-in-exchange


EWS提供的分页搜索接口


使用EWS托管API或EWS发送搜索请求时,指定视图大小,该大小控制返回的最大项目数。但是,服务器上与您的搜索匹配的项目数可能会大于视图大小。在这种情况下,服务器指示有更多项可用。您可以使用分页重复搜索并获取下一组结果。

例如,您可以发送视图大小为10的搜索请求。服务器上可能有15个项目与您的搜索匹配,但您只会返回前10个项目以及指示符(FindItemsResults 。如果您正在使用EWS托管API,则更多可用属性)服务器上有更多结果。然后,您可以发送偏移量为10的相同搜索,以询问与您的搜索匹配的下10个项目。服务器将返回剩余的五个项目。

学习笔记-Exchange Web Service API-开发_第10张图片

处理EWS API中的时区

https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/time-zones-and-ews-in-exchange


更多信息,请关注下方微信公众号

学习笔记-Exchange Web Service API-开发_第11张图片