当前位置: 首页 > news >正文

Exchange Web Services and Internet Message Headers

Exchage Web 服务和 Internet 消息头


这是文章的标题,不知道这样翻译对不对,但感觉还行,这篇文章我正在看,感觉不错,就转载了,等我真正的了解之后,我会详细的翻译出来的,或者至少把原理自己写出来,和大家分享

翻译的文章点击这里:
http://blog.csdn.net/zhangyunbo1116/archive/2007/11/18/1891557.aspx

 


导读:
  We had a customer asking how to use the InternetMessageHeaders property in EWS. The found that if they asked for the prop, they only got the names of the headers, but not the values. This is one of those areas (like attachments) where EWS is only going to fetch the minimal amount of data, avoiding potentially expensive operations until you explicitly ask for them. In this case, once you have the names of the headers, you can make another call back to fetch their values. Of course, if you already knew the name of a header you wanted, then you could skip the middle step and ask for it directly.
  I've updated my earlier sample to illustrate the technique.
  using System;
  using EWS;
  using System.Net;
  namespace GetProps
  {
  class Program
  {
  static void Main(string[] args)
  {
  ExchangeServiceBinding exchangeServer = new ExchangeServiceBinding();
  ICredentials creds = new NetworkCredential("SomeUser", "SomePassword", "SomeDomain");
  exchangeServer.Credentials = creds;
  exchangeServer.Url = @"http://MyServer/EWS/Exchange.asmx";
  DistinguishedFolderIdType[] folderIDArray = new DistinguishedFolderIdType[1];
  folderIDArray[0] = new DistinguishedFolderIdType();
  folderIDArray[0].Id = DistinguishedFolderIdNameType.inbox;
  PathToUnindexedFieldType ptuftDisplayName = new PathToUnindexedFieldType();
  ptuftDisplayName.FieldURI = UnindexedFieldURIType.folderDisplayName;
  PathToExtendedFieldType pteftComment = new PathToExtendedFieldType();
  pteftComment.PropertyTag = "0x3004"; // PR_COMMENT
  pteftComment.PropertyType = MapiPropertyTypeType.String;
  GetFolderType myfoldertype = new GetFolderType();
  myfoldertype.FolderIds = folderIDArray;
  myfoldertype.FolderShape = new FolderResponseShapeType();
  myfoldertype.FolderShape.BaseShape = DefaultShapeNamesType.IdOnly;
  myfoldertype.FolderShape.AdditionalProperties = new BasePathToElementType[2];
  myfoldertype.FolderShape.AdditionalProperties[0] = ptuftDisplayName;
  myfoldertype.FolderShape.AdditionalProperties[1] = pteftComment;
  Console.WriteLine("Getting inbox");
  GetFolderResponseType myFolder = exchangeServer.GetFolder(myfoldertype);
  FolderInfoResponseMessageType firmtInbox =
  (FolderInfoResponseMessageType) myFolder.ResponseMessages.Items[0];
  Console.WriteLine("got folder: {0}",firmtInbox.Folders[0].DisplayName);
  if (null != firmtInbox.Folders[0].ExtendedProperty)
  {
  Console.WriteLine("Comment: {0}",firmtInbox.Folders[0].ExtendedProperty[0].Item.ToString());
  }
  else
  {
  Console.WriteLine("Comment: not found");
  }
  PathToUnindexedFieldType ptuftSubject = new PathToUnindexedFieldType();
  ptuftSubject.FieldURI = UnindexedFieldURIType.itemSubject;
  PathToExtendedFieldType pteftFlagStatus = new PathToExtendedFieldType();
  pteftFlagStatus.PropertyTag = "0x1090"; // PR_FLAG_STATUS
  pteftFlagStatus.PropertyType = MapiPropertyTypeType.Integer;
  FindItemType findItemRequest = new FindItemType();
  findItemRequest.Traversal = ItemQueryTraversalType.Shallow;
  findItemRequest.ItemShape = new ItemResponseShapeType();
  findItemRequest.ItemShape.BaseShape = DefaultShapeNamesType.IdOnly;
  findItemRequest.ItemShape.AdditionalProperties = new BasePathToElementType[2];
  findItemRequest.ItemShape.AdditionalProperties[0] = ptuftSubject;
  findItemRequest.ItemShape.AdditionalProperties[1] = pteftFlagStatus;
  findItemRequest.ParentFolderIds = new FolderIdType[] { firmtInbox.Folders[0].FolderId };
  FindItemResponseType firt = exchangeServer.FindItem(findItemRequest);
  foreach (FindItemResponseMessageType firmtMessage in firt.ResponseMessages.Items)
  {
  if (null != firmtMessage.RootFolder &&firmtMessage.RootFolder.TotalItemsInView >0)
  {
  foreach (ItemType it in ((ArrayOfRealItemsType)firmtMessage.RootFolder.Item).Items)
  {
  Console.WriteLine("got item: {0}",it.Subject);
  if (null != it.ExtendedProperty)
  {
  Console.WriteLine("Prop PR_FLAG_STATUS: {0}",it.ExtendedProperty[0].Item.ToString());
  }
  else
  {
  Console.WriteLine("Prop PR_FLAG_STATUS: not found");
  }
  PathToUnindexedFieldType ptuftHeaders = new PathToUnindexedFieldType();
  ptuftHeaders.FieldURI = UnindexedFieldURIType.itemInternetMessageHeaders;
  PathToExtendedFieldType ptuftHeadersProp = new PathToExtendedFieldType();
  ptuftHeadersProp.PropertyTag = "0x007D"; // PR_TRANSPORT_MESSAGE_HEADERS
  ptuftHeadersProp.PropertyType = MapiPropertyTypeType.String;
  GetItemType getItemRequest = new GetItemType();
  getItemRequest.ItemIds = new ItemIdType[] { it.ItemId };
  getItemRequest.ItemShape = new ItemResponseShapeType();
  getItemRequest.ItemShape.BaseShape = DefaultShapeNamesType.IdOnly;
  getItemRequest.ItemShape.AdditionalProperties = new BasePathToElementType[2];
  getItemRequest.ItemShape.AdditionalProperties[0] = ptuftHeaders;
  getItemRequest.ItemShape.AdditionalProperties[1] = ptuftHeadersProp;
  GetItemResponseType girt = exchangeServer.GetItem(getItemRequest);
  foreach (ItemInfoResponseMessageType grmtMessage in girt.ResponseMessages.Items)
  {
  ItemType item = grmtMessage.Items.Items[0];
  if (null != item.ExtendedProperty)
  {
  Console.WriteLine("Prop PR_TRANSPORT_MESSAGE_HEADERS:/n {0}", item.ExtendedProperty[0].Item.ToString());
  }
  else
  {
  Console.WriteLine("Prop PR_TRANSPORT_MESSAGE_HEADERS: not found");
  }
  Console.WriteLine();
  if (null != item.InternetMessageHeaders)
  {
  PathToIndexedFieldType[] headerProps = new PathToIndexedFieldType[item.InternetMessageHeaders.Length];
  int index = 0;
  foreach (InternetHeaderType iht in item.InternetMessageHeaders)
  {
  PathToIndexedFieldType headerProp = new PathToIndexedFieldType();
  headerProp.FieldURI = DictionaryURIType.itemInternetMessageHeader;
  headerProp.FieldIndex = iht.HeaderName;
  headerProps[index++] = headerProp;
  }
  GetItemType getItemRequest2 = new GetItemType();
  getItemRequest2.ItemIds = new ItemIdType[] { it.ItemId };
  getItemRequest2.ItemShape = new ItemResponseShapeType();
  getItemRequest2.ItemShape.BaseShape = DefaultShapeNamesType.IdOnly;
  getItemRequest2.ItemShape.AdditionalProperties = headerProps;
  GetItemResponseType girt2 = exchangeServer.GetItem(getItemRequest2);
  foreach (ItemInfoResponseMessageType grmtMessage2 in girt2.ResponseMessages.Items)
  {
  ItemType item2 = grmtMessage2.Items.Items[0];
  if (null != item2.InternetMessageHeaders)
  {
  Console.Write("Parsing internet headers");
  foreach (InternetHeaderType iht2 in item2.InternetMessageHeaders)
  {
  if (null != iht2.HeaderName)
  {
  Console.Write("Header {0}", iht2.HeaderName.ToString());
  if (null != iht2.Value)
  {
  Console.WriteLine(" = {0}", iht2.Value.ToString());
  }
  else Console.WriteLine(" is null");
  }
  }
  }
  }
  }
  }
  Console.WriteLine();
  }
  }
  }
  Console.WriteLine("/nHit any key to continue");
  Console.ReadKey(true);
  }
  }
  }

本文转自
http://blogs.msdn.com/stephen_griffin/archive/2007/02/09/exchange-web-services-and-internet-message-headers.aspx

相关文章:

  • 奥运门票网站瘫痪给了我很深刻的启示……
  • HOWTO: EWS: Use GetAttachment to download attachments off Mail/Appointment
  • 使用 .NET 2.0 SecureString 类保护敏感数据
  • PowerShell的CmdLet开发的HelloWorld
  • Windows PowerShell学习笔记之一——命令帮助
  • C#的String.Format格式化举例(转)
  • .net(C#)中String.Format如何使用
  • ASP.net中名称以无效字符开头问题解决?
  • log4net简易配置--
  • c开发 一个关于访问性的问题
  • FCKedit(asp.net)详细配置以及下载
  • 如何生成一个新的GUID 全球统一唯一编号
  • readonly vs. const [C#] .net
  • VS2005 常用快捷键
  • ASP.NET中IsPostBack属性
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 2017-08-04 前端日报
  • ES10 特性的完整指南
  • Java小白进阶笔记(3)-初级面向对象
  • Java应用性能调优
  • 电商搜索引擎的架构设计和性能优化
  • 构建二叉树进行数值数组的去重及优化
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 离散点最小(凸)包围边界查找
  • 前言-如何学习区块链
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 如何设计一个比特币钱包服务
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 使用 @font-face
  • 使用agvtool更改app version/build
  • 听说你叫Java(二)–Servlet请求
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 用 Swift 编写面向协议的视图
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #if 1...#endif
  • #ifdef 的技巧用法
  • #pragma pack(1)
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • ( 10 )MySQL中的外键
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (办公)springboot配置aop处理请求.
  • (附源码)计算机毕业设计大学生兼职系统
  • (六)Hibernate的二级缓存
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .describe() python_Python-Win32com-Excel
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .naturalWidth 和naturalHeight属性,
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .net实现客户区延伸至至非客户区
  • .sh 的运行