摘要

最近在用ews的方式开发邮箱服务,包括写邮件,查看某封邮件的详情,回复,全部回复及转发功能。在获取收件箱的时候,关于唯一标识符的问题。也有点困惑,在每个邮件item中,存在一个changeKey和uniqueid的标识。关于这两个的区别还是查看msdn找到结果的。

EWS Identifiers in Exchange

原文地址:https://msdn.microsoft.com/en-us/library/office/dn605828(v=exchg.150).aspx

========================================丑陋的翻译分割线==================================================

找出在exchange中的标识符,怎么在EWS API和引用中使用他们。

在exhange存储中,每个对象都有一个唯一标识。你可以使用对象标识符去引用该对象也可以从其他对象中区分出来它。文件夹和item标识符是最常见的标识符。

为了理解标识符以及它对你的应用程序的重要性,理解对象之间的关系是非常有帮助的。当你的EWS Managed API 或者EWS应用在和Exchange通讯的时候,你将使用到不同等级的对象,包括邮箱,文件夹,item对象。一个存储可能是他们中的任何类型。通常,他在exchange服务器上是一个邮箱,但它也可能是一个在exchange服务器上公开的一个文件夹。(记住,在在线的exhange中,在线exchange是office 365的一部分,并且很多exhcnage版本以exchange2013开始,公开的文件仅仅是邮箱的另一种类型,并不是存储的不同种类。)

存储包括文件夹,文件夹包括items,并且每一个文件夹和item都有一个标识。如下图所示:

EWS identifiers

EWS中folders和items使用的标识符被成为ews标识符或者叫EwsIds。EwsIds在ews的很多不同的对象中都可以见到它。只是不同对象叫法不同罢了。因为,你可能在你的应用程序中使用这些对象,并且你想去理解怎样标识和EwsIds相关的这些对象。

这些在EWS中的标识符同样适用EWS Managed API.在EWS Managed API中,标识符是对象的属性,用来映射EWS元素。

下表列出了EWS中对象标识符。

对象 标识 与EWSID关系
CalendarItem 对应的子元素包含的日历项的唯一标识符。 对应ItemId 的子元素和EwsId标识的项相同。
Conversationid 它的id属性包含item是会议的一部分的标识。 id属性和EwsId标识的Item相同
AttachmentId 提供附件的唯一标识。RootItemId属性包含根存储的附件属于哪个item的唯一标识。 附件可以是在exchange存储中另外的items,在这种情况下,与EwsIds相同。RootItemId就是EwsId,因为它引用存储中的item。
PersonalId id属性返回包含人员标识的字符串。 id属性与EwsId标识的人员相同。
ContactId id属性返回联系人的标识的字符串。 id属性与EwsId标识的联系人相同。
GroupId id属性返回群组的标识的字符串。 d属性与EwsId标识的群组相同。
AssociatedCalendarItemId id属性标识日历项,和MeetingMessage,MeetingRequest,MeetingResponse或者MeetingCancellation相关。 d属性与EwsId标识的日历item相同。
UserConfigurationProperties 此元素的标识值指定标识符属性。 此标识符不直接映射到EwsId,它并不是一项属性标识符。
OccurrenceItemId The RecurringMasterId attribute identifies the master of a recurring item. he OccurrenceItemId value does not map directly to the EwsId, but the RecurringMasterId does because it references the top-level object of the recurring item.
StoreEntryId 包含一个item的exhange存储标识 此标识符不直接映射大EwsId,但提供了item在store中保存的标识。

注意

  1. 文件夹和项目对应的元素值是区分大小写的。如果你看一个文件夹或项目是由finditem操作返回的项目(或finditems EWS托管API方法),你可能会认为这是另一项的ID重复的;然而,这两项目中的一个或多个字符的ID都会有不同的情况。
  2. 如果你要存储的项ID在数据库中检索后,建议字段大小是512个字节,所以它是大到足以容纳的GUID。
  3. 不要假设您的ID将始终是有效的,如果您需要在以后的时间检索项目。如果一个项目在存储中移动,该ID可以改变,因为移动的方式处理。实际上是复制的一个项目,并生成一个新的ID,然后删除原始项目。
  4. 在Exchange中的标识符是不透明的,例如,EwsId从一些信息中被创建,但对开发者来说并不重要,但对exchange是很重要的。
  5. 当你在exchange中使用Items时,需要记住ChangeKey属性,此值,除了项目标识之外,用于跟踪项目状态。任何时候一个项目发生了变化将产生一个新的changkey。当你执行updateitem操作时,例如你可以使用ChangeKey属性让服务器知道你的更新被应用于该项的最新版本。如果另一个应用程序更改了您正在更新的项目,更改将无法匹配,您将无法执行更新操作。

[EWS]在exchange中的标识符的更多相关文章

  1. 解决 “MoveFile”: 类型库“XXX.dll”中的标识符已经是宏;使用“rename”限定符 类型库符号与系统符号冲突问题

    今天在VS工程当中引入一个组件,编译的时候出现警告, “MoveFile”: 类型库“XXX.dll”中的标识符已经是宏:使用“rename”限定符.虽然只是一个警告,但看着实在不爽,更重要的是,警告 ...

  2. 使用storyboard显示UITableView时,如果不修改系统默认生成的tableView:cellForRowAtIndexPath:方法中的代码,则必须为UITableViewCell注册(填写)重用标识符:identifier.必须要代码方法中的标识符一致.

    CHENYILONG Blog 使用storyboard显示UITableView时,如果不修改系统默认生成的tableView:cellForRowAtIndexPath:方法中的代码,则必须为UI ...

  3. 使用 EWS(Exchange Web Service)协议读取邮件、发送邮件

    问题: 公司之前可以通过POP3协议收发邮件,因而在SoapUI中用JavaMail可以读取邮件,后来配置了Office 365,POP3协议端口不再开放,邮件全部读取失败,报login timeou ...

  4. python中的标识符长度能有多长

    在python中,标识符可以还是任意长度.此外,我们在命名标识符时还必须遵守以下规则 1 只能以下划线或者A-Z/a-z中字母开头 2 其余部分可以使用A-Z/a-z/0-9 3 区分大小写 4 关键 ...

  5. Python中,标识符用法

    Python中,标识符 在Python中,所有标识符都可以包括英文.数字和下划线(),但不能包括数字.python中的标识符区分大小写.这是知识的背景.但通常,Python成为以下划线开头的标识符的习 ...

  6. [EWS]如何: 通过使用 Exchange 中的 EWS 流有关邮箱事件的通知

    摘要 在之前的文章中,介绍ews拉通知的模式订阅邮件.详情可阅读这篇文章:EWS 通过SubscribeToPullNotifications订阅Exchange新邮件提醒 ,可以看到拉通知的模式,是 ...

  7. JavaScript中产生标识符方式的演变

    本文记录下JS中产生标示符方式的演变,从ES5到ES6,ES5及其之前是一种方式,只包含两种声明(var/function),ES6则增加了一些产生标识符的关键字,如 let.const.class. ...

  8. RabbitMQ Exchange中的fanout类型

    fanout 多播 在之前都是使用direct直连类型的交换机,通过routingkey来决定把消息推到哪个queue中. 而fanout则是把拿到消息推到与之绑定的所有queue中. 分析业务,怎样 ...

  9. [c#]获取exchange中的图片

    摘要 在exchange 2007或者2010中获取的邮件内容为html标签格式,也就是一个页面.如果里面含有img标签,你会发现img标签的src属性为cid:xxxxxxxxxxxx的一串字符串, ...

随机推荐

  1. XHTML与HTML的区别

    XHTML:可扩展超文本标记语言,是一种置标语言,表现方式与超文本标记语言(HTML)类似,不过语法上更加严格. 参考:http://baike.baidu.com/search/word?word= ...

  2. hbase批量数据导入报错:NotServingRegionException

    批量导入数据到hbase的时候,报错: org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 ac ...

  3. linux: shell常用指令归纳

    1.软件安装方式: 1)源码安装: ~ wget xxxxxx ~ ./configure ~ make ~ make install 2) yum: ~ yum search : 查找软件包 ~ y ...

  4. 正则表达式re模块

    正则表达式模块re 1. 正则简介 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言, (在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被 编译 ...

  5. 2016.8.14安装myplayer心得

    安装mplayer时,我有两个os是not found状态,我在其他地方找到后 which mplayer,找到mplayer的配置界面,找到not found的部分,并且从usr/lib中找到相应的 ...

  6. iOS - CAEmitterLayer 学习笔记一

    其他参考博客: http://my.oschina.net/u/2340880/blog/485095 http://www.cnblogs.com/YouXianMing/p/3785876.htm ...

  7. SQL Server编程(06)触发器

    SQL Server 通过触发器用来保证业务逻辑和数据的完整性.在SQL Server中,触发器是一种特殊类型的存储过程,可在执行语言事件时自动触发.SQL Server中触发器包括三种:DML触发器 ...

  8. angularjs中$watch监听model(对象属性、对象)变化

    昨天看了一下教学视频,学到了有关$watch的用法,想到最近做的一个页面中有个select下拉选项(select中的值变化了,则后面input中的值也跟着相应的变化),不知是否可以使用$watch来代 ...

  9. sp_executesql 使用

    sp_executesql 比 之前的exec @sql 区别在可以实现参数的传入传出 如 declare @sql nvarchar(2000) declare @pid varchar(20) s ...

  10. Centos7安装Oracle12c

    环境: CentOS7@VMware12,分配资源:CPU:2颗,内存:4GB,硬盘空间:30GB Oracle12C企业版64位 过程纪要: root身份安装依赖包: compat-libstdc+ ...