EWS小记
前段时间和同事完成了一个Exchange 2010 OWA的改造版,他狠狠的把网易邮箱抄了一把,而我则狠狠的被EWS坑了一把。今天打开项目粗略看了一下,发现很多东西都有点记不起来了,思细极恐,决定还是梳理一下,免得以后措手不及。这里先上个照!

使用EWS进行多个文件夹邮件搜索
方法是使用一个FindfolderResult进行搜索,代码如下:
FindFoldersResults findFoldersResults = service.FindFolders(rootFolderId, searchFilterCollection, folderView);
if (findFoldersResults.Folders.Count > )
{
Folder allItemsFolder = findFoldersResults.Folders[];
FindItemsResults<Item> findResults = allItemsFolder.FindItems(filter, BuildPagingView(pageInfo, orderProperty, sortDirection));
。。。
至于如何获取这个“所有文件夹”,参考以下代码:
var searchFilterCollection = new SearchFilter.SearchFilterCollection(LogicalOperator.And)
{
new SearchFilter.IsEqualTo(new ExtendedPropertyDefinition(, MapiPropertyType.Integer), ""),
new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "allitems")
};
“new SearchFilter.IsEqualTo(new ExtendedPropertyDefinition(13825, MapiPropertyType.Integer), "2")”是属性筛选,指定为邮件文件夹。关于这个,我只想说“你妹”!这里有一篇关于扩展属性定义的列表:http://msdn.microsoft.com/en-us/library/ms526844%28EXCHG.10%29.aspx
显示指定加载属性
调用文件夹或者文件夹搜索结果的FindItems方法的时候,虽然有一个重载能够指定要加载的属性,但是某些属性还是不加载的,例如,Item的Sender和From成员的一些属性。这个时候需要使用service的LoadProperties方法,如下:
FindItemsResults<Item> findResults = allItemsFolder.FindItems(filter, BuildPagingView(pageInfo, orderProperty, sortDirection));
pageInfo.Amount = findResults.TotalCount;
if (findResults.Items.Count > )
{
service.LoadPropertiesForItems(findResults, GetPropertySet());
。。。
移动为草稿
我个人感觉把一封邮件移到草稿箱变成草稿是很奇怪的行为,不过我们还是按照网易这么做了。在Exchange里面对一封已经处理完毕(发送、接受)的邮件进行修改是不允许的。so,实际上的做法是把原邮件内容取出来(不是复制),然后新建一封发出去。
此外,Item类型的IsDraft属性可以准确的判断一封邮件是否为草稿,而不是依赖于文件夹。
关于邮件文件夹的大小
默认情况下,空文件夹也会占用零点几KB的大小,不用在意这些细节。
自定义传输规则
如果需要使用编码自定义传输规则,可以参考以下资料:
http://technet.microsoft.com/zh-cn/library/bb124703.aspx
http://www.cnblogs.com/xuanye/archive/2011/04/17/2018783.html
继承一个工厂类和一个代理类即可。此外,代码中出现任何未被捕捉到的异常,都会被抛出,但是不会影响邮件路由(代码把邮件删了另当别论,代码导致整个系统挂了另当别论)。
...
EWS小记的更多相关文章
- [原]Paste.deploy 与 WSGI, keystone 小记
Paste.deploy 与 WSGI, keystone 小记 名词解释: Paste.deploy 是一个WSGI工具包,用于更方便的管理WSGI应用, 可以通过配置文件,将WSGI应用加载起来. ...
- MySql 小记
MySql 简单 小记 以备查看 1.sql概述 1.什么是sql? 2.sql发展过程? 3.sql标准与方言的关系? 4.常用数据库? 5.MySql数据库安装? 2.关键概念 表结构----- ...
- Git小记
Git简~介 Git是一个分布式版本控制系统,其他的版本控制系统我只用过SVN,但用的时间不长.大家都知道,分布式的好处多多,而且分布式已经包含了集中式的几乎所有功能.Linus创造Git的传奇经历就 ...
- 广州PostgreSQL用户会技术交流会小记 2015-9-19
广州PostgreSQL用户会技术交流会小记 2015-9-19 今天去了广州PostgreSQL用户会组织的技术交流会 分别有两个session 第一个讲师介绍了他公司使用PostgreSQL-X2 ...
- 东哥读书小记 之 《MacTalk人生元编程》
一直以来的自我感觉:自己是个记性偏弱的人.反正从小读书就喜欢做笔记(可自己的字写得巨丑无比,尼玛不科学呀),抄书这事儿真的就常发生俺的身上. 因为那时经常要背诵课文之类,反正为了怕自己忘记, ...
- Paypal支付小记
Paypal支付小记 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !impo ...
- linux 下cmake 编译 ,调用,调试 poco 1.6.0 小记
上篇文章 小记了: 关于 Poco::TCPServer框架 (windows 下使用的是 select模型) 学习笔记. http://www.cnblogs.com/bleachli/p/4352 ...
- mongodb入门学习小记
Mongodb 简单入门(个人学习小记) 1.安装并注册成服务:(示例) E:\DevTools\mongodb3.2.6\bin>mongod.exe --bind_ip 127.0.0.1 ...
- 【日常小记】统计后缀名为.cc、.c、.h的文件数【转】
转自:http://www.cnblogs.com/skynet/archive/2011/03/29/1998970.html 在项目开发时,有时候想知道源码文件中有多少后缀名为.cc..c..h的 ...
随机推荐
- 将centos 7改造为LINUX桌面系统
http://www.3566t.com/news/ckan/1410774.html CentOS 桌面版安装配置(以CentOS 7为例) http://blog.csdn.net/zhanghu ...
- git svn 简易同时使用
这个方法适合于新的一个git 仓库.假如你使用的git 是最新版本,git本身提供了 git svn命令. 1. 进入一个空的目录,初始化一个空的git仓库: git svn init svn://x ...
- APK downloader
APK Downloader Android apk (2016-08-25发现) Apk pure 好像提供免费的FQ工具哟 发现一个Android richtext RichEditor for ...
- WindowManage与Window的在Activity的一点小应用
super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN ...
- ios fix UIRefreshControl bug
NS_CLASS_AVAILABLE_IOS(6_0) UIRefreshControl 有个毛病有时会出bug 动画下拉就不动了,这里给出修复处理: @interface UICollecti ...
- [PR & ML 1] [Introduction] Informal Basic Concepts
最近还没更完OpenCV又开了新坑,谁教machine learning处在紧急又重要的地位呢.更新的内容总结自Pattern Recognition and Machine Learning by ...
- TimesTen ODBC 链接库差异及相关命令行工具的使用注意事项
1. TimesTen有两种访问模式:Direct模式和Client/Server模式,以下为来自Operations Guide 的描述 Connecting using TimesTen ODBC ...
- OpenJudge / Poj 1044 Date bugs C++
链接地址: Poj:http://poj.org/problem?id=1044 OpenJudge:http://bailian.openjudge.cn/practice/1044/ 题目: 总时 ...
- resin的简单介绍和使用
1.resin是一款应用服务器(application server),它自身也包含一款支持Http1.1协议的WEB服务器(web server),它也可以和其他的web服务器一起工作如IIS和Ap ...
- Nwjs从入门到精通 菜鸟实践笔记【1】
最近公司有想使用Nw来开发浏览器的想法,自己一直学的PHP,在网上并没有找到太多的相关资料,所以,就自己摸索着撸一条自学笔记: 当然呢,这里记录的都是我自己学习中遇到的问题,以及收获,希望通过自己的分 ...