EWS将附件分为两组:文件附件和项目附件
项目附件:附加到另一个强类型EWS项目的强类型EWS项目,例如电子邮件和日历项目。
文件附件:任何文件,例如.txt,.jpg,.zip,.pdf,甚至是.msg文件。文件附件只有一些属性,其中一个属性是文件的base-64编码内容。
引用附件:文件提供程序引用的任何附件,例如位于云中的文件。附件可以来自多个提供者。
内联附件
内联附件是一种特殊的附件。文件附件和项目附件都可以是内联附件。内联附件显示为正文内容的一部分,并保留其相对于项目中其余内容的位置。
EWS日历功能,自动发送会议通知示例
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("[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版本中,公用文件夹只是另一种类型的邮箱,而不是另一种类型的存储。)存储包含文件夹和文件夹包含项目,每个文件夹和项目都有一个标识符,如下图所示。
EWS用于文件夹和项目的标识符称为EWS标识符或EwsIds。EWSIds可以在EWS中的许多不同对象中找到,但是对于不同的对象被称为不同的对象。因为您可能在应用程序中使用这些对象,所以您需要了解这些对象的标识符与EwsId的关系。
EWS中的标识符也适用于EWS托管API。在EWS托管API中,标识符是对象的属性,并在内部进行管理以映射到EWS元素。
模拟访问EWS
什么时候应该选择模拟而不是委托或文件夹权限?
如果要为用户提供对文件夹的访问权限但不希望用户具有“代表发送”权限,请使用文件夹权限。
如果要授予一个用户代表另一个用户执行工作的权限,请使用委派访问权限。通常,这是一对一或一对一的权限 - 例如,管理管理员日历的单个管理助理,或管理一组会议室的日历的单个房间调度程序。
当您拥有需要访问多个邮箱并“充当”邮箱所有者的服务应用程序时,请使用模拟。
当您处理多个邮箱时,模拟是最佳选择,因为您可以轻松地授予一个服务帐户访问数据库中每个邮箱的权限。当您仅授予少数用户访问权限时,委派和文件夹权限最佳,因为您必须分别为每个邮箱添加权限。
模拟是连接到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.GetInboxRules和ExchangeService.UpdateInboxRules方法。EWS提供了用于处理规则的GetInboxRules和UpdateInboxRules操作。但请注意,使用收件箱规则时,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)订阅,以便在邮箱中或邮箱中的一个或多个文件夹中发生事件时接收通知。提供三种订阅类型:流通知,拉取通知和推送通知。这些订阅类型中的每一种都使用不同的技术来接收或检索通知。
通知订阅返回的事件类型
流式通知
拉动通知
推送通知
EWS同步如何工作
初始同步的模式如下
正在运行中的同步模式(增量同步)
更多关于同步的最佳实践请参考: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中的时区
https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/time-zones-and-ews-in-exchange
更多信息,请关注下方微信公众号