[EWS]在exchange中的标识符
摘要
最近在用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中保存的标识。 |
注意
- 文件夹和项目对应的元素值是区分大小写的。如果你看一个文件夹或项目是由finditem操作返回的项目(或finditems EWS托管API方法),你可能会认为这是另一项的ID重复的;然而,这两项目中的一个或多个字符的ID都会有不同的情况。
- 如果你要存储的项ID在数据库中检索后,建议字段大小是512个字节,所以它是大到足以容纳的GUID。
- 不要假设您的ID将始终是有效的,如果您需要在以后的时间检索项目。如果一个项目在存储中移动,该ID可以改变,因为移动的方式处理。实际上是复制的一个项目,并生成一个新的ID,然后删除原始项目。
- 在Exchange中的标识符是不透明的,例如,EwsId从一些信息中被创建,但对开发者来说并不重要,但对exchange是很重要的。
- 当你在exchange中使用Items时,需要记住ChangeKey属性,此值,除了项目标识之外,用于跟踪项目状态。任何时候一个项目发生了变化将产生一个新的changkey。当你执行updateitem操作时,例如你可以使用ChangeKey属性让服务器知道你的更新被应用于该项的最新版本。如果另一个应用程序更改了您正在更新的项目,更改将无法匹配,您将无法执行更新操作。
[EWS]在exchange中的标识符的更多相关文章
- 解决 “MoveFile”: 类型库“XXX.dll”中的标识符已经是宏;使用“rename”限定符 类型库符号与系统符号冲突问题
今天在VS工程当中引入一个组件,编译的时候出现警告, “MoveFile”: 类型库“XXX.dll”中的标识符已经是宏:使用“rename”限定符.虽然只是一个警告,但看着实在不爽,更重要的是,警告 ...
- 使用storyboard显示UITableView时,如果不修改系统默认生成的tableView:cellForRowAtIndexPath:方法中的代码,则必须为UITableViewCell注册(填写)重用标识符:identifier.必须要代码方法中的标识符一致.
CHENYILONG Blog 使用storyboard显示UITableView时,如果不修改系统默认生成的tableView:cellForRowAtIndexPath:方法中的代码,则必须为UI ...
- 使用 EWS(Exchange Web Service)协议读取邮件、发送邮件
问题: 公司之前可以通过POP3协议收发邮件,因而在SoapUI中用JavaMail可以读取邮件,后来配置了Office 365,POP3协议端口不再开放,邮件全部读取失败,报login timeou ...
- python中的标识符长度能有多长
在python中,标识符可以还是任意长度.此外,我们在命名标识符时还必须遵守以下规则 1 只能以下划线或者A-Z/a-z中字母开头 2 其余部分可以使用A-Z/a-z/0-9 3 区分大小写 4 关键 ...
- Python中,标识符用法
Python中,标识符 在Python中,所有标识符都可以包括英文.数字和下划线(),但不能包括数字.python中的标识符区分大小写.这是知识的背景.但通常,Python成为以下划线开头的标识符的习 ...
- [EWS]如何: 通过使用 Exchange 中的 EWS 流有关邮箱事件的通知
摘要 在之前的文章中,介绍ews拉通知的模式订阅邮件.详情可阅读这篇文章:EWS 通过SubscribeToPullNotifications订阅Exchange新邮件提醒 ,可以看到拉通知的模式,是 ...
- JavaScript中产生标识符方式的演变
本文记录下JS中产生标示符方式的演变,从ES5到ES6,ES5及其之前是一种方式,只包含两种声明(var/function),ES6则增加了一些产生标识符的关键字,如 let.const.class. ...
- RabbitMQ Exchange中的fanout类型
fanout 多播 在之前都是使用direct直连类型的交换机,通过routingkey来决定把消息推到哪个queue中. 而fanout则是把拿到消息推到与之绑定的所有queue中. 分析业务,怎样 ...
- [c#]获取exchange中的图片
摘要 在exchange 2007或者2010中获取的邮件内容为html标签格式,也就是一个页面.如果里面含有img标签,你会发现img标签的src属性为cid:xxxxxxxxxxxx的一串字符串, ...
随机推荐
- 【caffe】train_lenet.sh在windows下的解决方案
@tags: caffe python 在windows下配置caffe后,跑mnist手写数字识别的例子.发现train_lenet.sh不能运行. 那就写个python脚本替代吧. step1 定 ...
- css选择器(选择<div>内所有<p>元素)
情况1:<div><p></div> 情况2:<div><a><p></p></a></div&g ...
- Webpack打包工具实时更新操作(启用观察者模式)
可能存在这样的问题,每次修改完js/css文件之后,都要进行手动打包一下,浏览器上刷新一下. 那么我一般这样做: 1.安装Hbuilder,并启用边编辑边看的模式(其实这个是默认的). 2.启动Web ...
- 什么是ECMA标准
是1961年成立的旨在建立统一的电脑操作格式标准,包括程序语言和输入输出的组织. 官方ECMA标准列表: http://www.ecma-international.org/publications/ ...
- genymotion访问电脑的localhost
用来进行android测试时使用genymotion,genymotion是运行在virtualbox中的,virtualbox为两者建立了连接,在linux下通过ifconfig可以看到有一个叫做v ...
- Oracle 数据类型
类型 含义 CHAR(length) 存储固定长度的字符串.参数length指定了长度,如果存储的字符串长度小于length,用空格填充.默认长度是1,最长不超过2000字节. VARCHAR2(le ...
- AngularJs 脏值检查及其相关
今天突然就想写写$digest和$apply,这些都是脏值检查的主体内容. 先以普通js来做一个简单的监控例子吧: var div = ducoment.getElementById("my ...
- django数据库时间存储格式问题
http://blog.csdn.net/ichuzhen/article/details/38555645 一般建议用datefield 关于从数据库读取出来格式问题可以看 http://stack ...
- hibernate-criteria查询
Criteria查询是Hibernate提供的一种查询方式 下面就一个员工和部门来列一个总体的例子 package Test; import java.util.ArrayList; import j ...
- Android应用程序消息处理机制
http://download.csdn.net/detail/luoshengyang/6439647 pdf