采用模拟账号的方式读取日历信息,注意下日历的内容读取(Body)读取。代码如下:(采用 EWS API 2.0版本)

1、读取内容前必须设置如下属性:否则会提示:You must load or assign this property before you can read its value  Body

如下图:

 //*************************以为设置为读取内容,否则会提示:You must load or assign this property before you can read its value  Body
    PropertySet detailedPropertySet = new PropertySet(BasePropertySet.FirstClassProperties, AppointmentSchema.Recurrence);
    service.LoadPropertiesForItems(from Item item in findResults select item, detailedPropertySet);
 //******************************

设置后正常。

2、如果想读取内容的纯文本,目前Exchange server2010内的版本支持读取带HTML的内容。调用代码如下:

 //如果文本不为空
                        if (item.TextBody != null)
                        {
                            TextBody txtBody = item.TextBody;
                            //
                            info.BodyText = txtBody.Text;
                        }

 

调用后出现如下错误:

所以只能用正则表达式获取文本内容。

 

附带正确代码:

 #region//读入日历信息
        /// <summary>
        /// 读入日历信息
        /// </summary>
        /// <param name="config">配置参数</param>
        /// <param name="searchdtStart">开始时间</param>
        /// <param name="searchdtEnd">结束时间</param>
        /// <returns>返回列表</returns>
        private static List<CalendarInfo> GetCalendarList(EwsConfig config,DateTime searchdtStart,DateTime searchdtEnd)
        {
            //返回值
            List<CalendarInfo> CalendarInfoList = new List<CalendarInfo>();
            try
            {
                //读取未读邮件
                CalendarFolder calendarfolder = (CalendarFolder)Folder.Bind(service, WellKnownFolderName.Calendar);
                //如果不为空
                if (calendarfolder != null)
                {
                    //检索开始时间和结束时间
                    CalendarView calendarView = new CalendarView(searchdtStart, searchdtEnd);
                    //检索数据
                    FindItemsResults<Appointment> findResults = calendarfolder.FindAppointments(calendarView);
                    //*************************以为设置为读取内容,否则会提示:You must load or assign this property before you can read its value  Body
                    PropertySet detailedPropertySet = new PropertySet(BasePropertySet.FirstClassProperties, AppointmentSchema.Recurrence);
                    service.LoadPropertiesForItems(from Item item in findResults select item, detailedPropertySet);
                    //******************************
                    //返回
                    foreach (Appointment item in findResults.Items)
                    {

                        //实体类
                        CalendarInfo info = new CalendarInfo();
                        //主题
                        info.Identity = item.ICalUid;
                        //来源
                        info.Source = "Exchange2010";
                        //主题
                        info.Subject = item.Subject;
                        //地区
                        info.Location = item.Location;
                        //开始时间
                        info.StartTime = item.Start.ToLocalTime();
                        //结束时间
                        info.EndTime = item.End.ToLocalTime();
                        //url
                        info.Url = item.WebClientReadFormQueryString;
                        //加入如下,表示读取内容,否则会提示如下:

                        //HTML如果不为空
                        if (item.Body != null)
                        {
                            //html格式的内容
                            MessageBody body = item.Body;
                            //读取文本
                            info.BodyHtml = body.Text;

                        }
                            //
                        //读取id
                        if (item.Id != null)
                        {
                            info.ItemIdType = new CalendarInfo.CalendarItemIdType { Id = item.Id.UniqueId, ChangeKey = item.Id.ChangeKey };
                        }
                        //加入到集合中去
                        CalendarInfoList.Add(info);
                    }
                }
            }
            catch (Microsoft.Exchange.WebServices.Data.ServiceResponseException ex)
            {
                throw ex;
            }
            //return
            return CalendarInfoList;
        }
        #endregion

EWS API 2.0读取日历信息-读取内容注意事项的更多相关文章

  1. (弃)解读Openstack Identity API v2.0

    目前OpenStack社区提供了详尽的API文档,并配有丰富的说明和示例,关于Identity API v2查看这里, 关于Identity API v3请查看这里. 尽管现在官方已经不建议OpenS ...

  2. HTML5的File API读取文件信息

    html结构: <div id="fileImage"></div> <input type="file" value=" ...

  3. ASP.NET Core的配置(1):读取配置信息

    提到"配置"二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化 ...

  4. JPEG图片扩展信息读取与修改

    extends:http://www.2cto.com/kf/201405/303813.html 读写均是键值对的方式,需要注意的是值的类型需要严格按照api定义格式. 支持读写节点为: 1.TAG ...

  5. JPEG图片扩展信息读取与改动

    近日项目中须要用到往jpg图片中写入信息(非水印),经调研发现Android中已经封装了读写jpg图片扩展信息的api(ExifInterface). 相应api地址:http://developer ...

  6. JPEG图像扩展信息读取和修改

    最近,项目需要使用jpg图像信息被写入(非水印),经过研究发现,Android已封装的读者jpg图片扩展信息api(ExifInterface). 通讯api住址:http://developer.a ...

  7. Mp3文件标签信息读取和写入(Kotlin)

    原文:Mp3文件标签信息读取和写入(Kotlin) - Stars-One的杂货小窝 最近准备抽空完善了自己的星之小说下载器(JavaFx应用 ),发现下载下来的mp3文件没有对应的标签 也是了解可以 ...

  8. 解惑:NFC手机如何轻松读取银行卡信息?

    自支付宝钱包8.0推出了NFC新功能,只要将支持NFC功能的手机靠近公交卡.银行卡等带有芯片的IC卡上,可迅速读取卡内余额.卡的信息,还可以给卡进行充值,非常贴心实用. 但是很多网友表示担忧,要是别人 ...

  9. ios读取通讯录信息

    ios读取通讯录信息 (2012-05-22 14:07:11) 标签: ios读取通讯录 it   iphone如许app读取通讯录信息,读取通讯录信息时需要加载AddressBookUI 和Add ...

随机推荐

  1. Office PPT保持提示无法保存Gill Sans 等非TrueType字体

    升级office到最新版了 我有一天在做PPT,保存文件后提示保存:无法保存Gill Sans 等非TrueType字体 我知道PPT可以替换字体.于是使用替换字体功能,但是提示非TrueType不能 ...

  2. C++程序设计之四书五经[转自2004程序员杂志]--上篇

    C++程序设计之四书五经 作者:荣耀 C++是一门广泛用于工业软件研发的大型语言.它自身的复杂性和解决现实问题的能力,使其极具学术研究价值和工业价值.和C语言一样,C++已经在许多重要的领域大获成功. ...

  3. Windows Azure HandBook (10) 测试本地网络到微软云的延迟

    <Windows Azure Platform 系列文章目录> 之前遇到一些微软云的客户,在使用海外数据中心的时候,需要评估本地网络到微软云网络的延迟. 我们建议部署到微软云上的服务,离最 ...

  4. Elasticsearch——multi termvectors的用法

    前一篇已经翻译过termvectors的使用方法了,这对于学习如何使用tf-idf来说是很有帮助的了. 更多内容参考我整理的ELK教程 什么是TF-IDF? 今天早晨起来,看<ES IN ACT ...

  5. golang中的race检测

    golang中的race检测 由于golang中的go是非常方便的,加上函数又非常容易隐藏go. 所以很多时候,当我们写出一个程序的时候,我们并不知道这个程序在并发情况下会不会出现什么问题. 所以在本 ...

  6. react路由深度解析

    先看一段代码能否秒懂很重要 这是app.js  全局js的入口 import React from 'react' import { render } from 'react-dom' import ...

  7. 【Remoting】.Net remoting方法实现简单的在线升级(下篇:重启exe)

    一.前言      上篇运用了.Net Remoting技术解决了本地与服务器版本对比,并下载更新包的过程. 本篇主要是应用Process,来实现重启程序的过程. 情景假设:       Revit2 ...

  8. svn无法创建分支的解决方法

    创建分支时出现错误 Access to '/svn/project01/!svn/rvr/18022/trunk' forbidden 解决方法: 找到project01仓库的根目录,假如在d:\sv ...

  9. 优秀ASP.NET程序员修炼之路

    初级的程序员或经验不足的程序员往往只意识到自己的程序是写给计算机的,而不会在意程序其实也是写给人的,或在意得不够.不全面. 写给机器的程序,往往追求的是运行正确.执行效率能满足要求.但程序员的任务仅仅 ...

  10. C#项目中常用到的设计模式

    1. 引言 一个项目的通常都是从Demo开始,不断为项目添加新的功能以及重构,也许刚开始的时候代码显得非常凌乱,毫无设计可言.但是随着项目的迭代,往往需要将很多相同功能的代码抽取出来,这也是设计模式的 ...