zoukankan      html  css  js  c++  java
  • 如何使用Exchange Web Service获取日历(包含循环会议)

    本文介绍如何使用EWS代理类调用Exchange的日历

    (1)首先生成代理类

              

    ExchangeServiceBinding _ExchangeBinding = new ExchangeServiceBinding();
              _ExchangeBinding.Credentials = new NetworkCredential(username, password, domain);
              _ExchangeBinding.Url = Helper.GetWebconfig("exchangewebservice");


         

    (2)定义请求的属性

      请注意:在定义请求属性时,一定要定义CalendarViewType属性,默认的日历返回是不含循环日历的,

    如果需要返回循环会议请求,就需要等译CalendarView

    FindItemType findItemRequest = new FindItemType();
    
      ItemResponseShapeType itemProperties = new ItemResponseShapeType();    
      itemProperties.BaseShape = DefaultShapeNamesType.AllProperties;          
       findItemRequest.ItemShape = itemProperties;
    
        //我们查找的是日历      
    DistinguishedFolderIdType[] folderIDs = { new DistinguishedFolderIdType { Id = DistinguishedFolderIdNameType.calendar } };         
      findItemRequest.ParentFolderIds = folderIDs;
    
          //增加搜索的日历范围,红色代码要饭服务器返回循环会议
    
              CalendarViewType cldview = new CalendarViewType();           
              cldview.StartDate = dt.AddDays(-2);          
              cldview.EndDate = dt.AddDays(2);
               findItemRequest.Item = cldview;                      
    
                findItemRequest.Traversal = ItemQueryTraversalType.Shallow;

    (3)定义服务器返回的数据属性           

      

       FindItemResponseType findItemResponse = _ExchangeBinding.FindItem(findItemRequest);
    
         
              ArrayOfResponseMessagesType responseMessages = findItemResponse.ResponseMessages;
              ResponseMessageType[] responseMessage = responseMessages.Items;
    
          
    
              foreach (ResponseMessageType rmt in responseMessage)
              {
                  #region 结果
    
    
                  FindItemResponseMessageType msgType = (rmt as FindItemResponseMessageType);
    
                  if (msgType.RootFolder == null)
                      continue;
    
    
                  FindItemParentType parentType = msgType.RootFolder;
    
    
                  object obj = parentType.Item;
                  if (obj is ArrayOfRealItemsType)
                  {
                      ArrayOfRealItemsType items = (obj as ArrayOfRealItemsType);
                      if (items != null)
                      {
                          if (items.Items != null)
                          {
                              foreach (ItemType item in items.Items)
                              {
                                  CalendarItemType calItem = item as CalendarItemType;
                                  DataRow row = table.NewRow();
                                  row["roomid"] = 1;
                                  row["guid"] = guid;
                                  row["begintime"] = calItem.Start.AddHours(timezone);
                                  row["endtime"] = calItem.End.AddHours(timezone);
                                  row["location"] = calItem.Location;
                                  row["title"] = calItem.Subject;
                                  row["displayname"] = calItem.Organizer.Item.Name;
                                  if (row["endtime"].ToString() != "")
                                  {
                                      table.Rows.Add(row);
                                  }
                              }
                          }
                      }
    
                  }
    
                  #endregion
              }

      

  • 相关阅读:
    [Give a try | Multithreading]The Practical Guide to Multithreading
    [SOLID]The Principles of OOD
    Mixing Native and Managed Types in C++
    [转载]关于大型软件重构的一些想法
    Mixed mode programming is the absolute power of C++/CLI
    Sample: Mixing Unmanaged C++, C++/CLI, and C# code
    添加删除虚函数带来的问题及解决办法
    如何阅读code base的组内讨论的总结
    如何快速定位一个函数的返回点(c/c++ Only)
    DirextX Training笔记
  • 原文地址:https://www.cnblogs.com/mqingqing123/p/2878475.html
Copyright © 2011-2022 走看看