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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值