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的 ...
随机推荐
- 解决myeclipse过期问题
一般myeclise使用期限为30天,超过之后,会频繁的提醒你,购买软件,很讨厌,有个这个小工具,,以后再也不怕啦!!! 使用方法: 1:将这个类导入到myeclipse包中 2:运行main方法,提 ...
- Linux:返回上一次目录 / 返回上次命令目录
返回上一次目录命令: cd - 该命令等同于cd $OLDPWD,关于这一点在bash的手册页(可使用命令man bash访问其手册页)中有介绍:An argument of - is equiva ...
- 【干货分享】.NET单元测试电子书
文章目录: 引言 书籍首页 书籍目录 备注 下载 回到顶部 引言: 平时没有项目压力时候,首先想到的是充电学习,要系统学习都会想到购买书籍,或者向同事借阅.买的书多了烦恼也来了,因为大学到现在5 ...
- CheckSum
1.What is Checksum? A check sum is basically a value that is computed from data packet to check its ...
- MSBuild could not create or connect to a task host with runtime "CLR2" and architecture "x86".
vs2010 and vs2012 are installed on target machine. Build c# project using vs2010, following error oc ...
- MVC——分页控件
不管是什么类型的网站,分页都是必不可少的功能实现.在这里记录一下我自己接触过的分页控件: 一. MvcPager控件(记得项目里添加MvcPager.dll的引用) 这里面比较常用的就 ——@Html ...
- sql System.Data.SqlClient.SqlError: 无法覆盖文件 'C:\Program Files\Microsoft SQL Server\MSSQL\data\itsm_Data.MDF'。数据库 'my1' 正在使用该文件的解决方案
对数据库备份进行还原时遇到“sql System.Data.SqlClient.SqlError: 无法覆盖文件 'C:\Program Files\Microsoft SQL Server\MSSQ ...
- 只允许输入数字的TextBox控件
[实例说明] 可以在TextBox控件中轻松地输入文本信息,输入的文本信息可以包括字母.数字.汉字等. 如果需要用户在TextBox控件中填写年龄信息,那么年龄信息应当只允许数字,怎么限制用户输入其他 ...
- apache开启gzip的方法
在Apache中开启gzip压缩方法为: 1. 在httpd.conf 或者博客根目录的.htaccess文件中加入如下规则(Apache服务器需要支持 mod_deflate) 本文出处参考:htt ...
- err: exp-00056 rra-12154 exp-00000
一直用的是win7系统+oracle11g r1 server端(后简称r1). 由于工作需要装了oracle11g r2 client端(后简称r2). 在装r2之前,r1的导出exp是没有问题的. ...