• EWS小记


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

     

    使用EWS进行多个文件夹邮件搜索

    方法是使用一个FindfolderResult进行搜索,代码如下:

     FindFoldersResults findFoldersResults = service.FindFolders(rootFolderId, searchFilterCollection, folderView);
                if (findFoldersResults.Folders.Count > 0)
                {
                    Folder allItemsFolder = findFoldersResults.Folders[0];
                    FindItemsResults<Item> findResults = allItemsFolder.FindItems(filter, BuildPagingView(pageInfo, orderProperty, sortDirection));
    。。。
    View Code

    至于如何获取这个“所有文件夹”,参考以下代码:

    var searchFilterCollection = new SearchFilter.SearchFilterCollection(LogicalOperator.And)
                                                 {
                                                     new SearchFilter.IsEqualTo(new ExtendedPropertyDefinition(13825, MapiPropertyType.Integer), "2"),
                                                     new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "allitems")
                                                 };
    View Code

    “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 > 0)
                    {
                        service.LoadPropertiesForItems(findResults, GetPropertySet());
    。。。
    View Code

    移动为草稿

    我个人感觉把一封邮件移到草稿箱变成草稿是很奇怪的行为,不过我们还是按照网易这么做了。在Exchange里面对一封已经处理完毕(发送、接受)的邮件进行修改是不允许的。so,实际上的做法是把原邮件内容取出来(不是复制),然后新建一封发出去。

    此外,Item类型的IsDraft属性可以准确的判断一封邮件是否为草稿,而不是依赖于文件夹。

    关于邮件文件夹的大小

    默认情况下,空文件夹也会占用零点几KB的大小,不用在意这些细节。

    自定义传输规则

    如果需要使用编码自定义传输规则,可以参考以下资料:

    http://technet.microsoft.com/zh-cn/library/bb124703.aspx

    http://code.msdn.microsoft.com/office/Exchange-2013-Build-an-6e544269/sourcecode?fileId=82390&pathId=37453958

    http://www.cnblogs.com/xuanye/archive/2011/04/17/2018783.html 

    继承一个工厂类和一个代理类即可。此外,代码中出现任何未被捕捉到的异常,都会被抛出,但是不会影响邮件路由(代码把邮件删了另当别论,代码导致整个系统挂了另当别论)。

    ...

  • 相关阅读:
    发布在《30天自制操作系统》之前的操作捷径必读贴
    写在《30天自制操作系统》上市之前
    JS跨域代码片段
    C#简单操作XML
    Application Session Cookie ViewState Cache Hidden 区别
    C# string 特殊引用类型
    精通CSS高级Web标准解决方案:相对定位与绝对定位
    精通CSS高级Web标准解决方案:浮动
    精通CSS高级Web标准解决方案:背景图像基础
    char、varchar、nchar、nvarchar的区别
  • 原文地址:https://www.cnblogs.com/lightluomeng/p/3473209.html
Copyright © 2020-2023  润新知