Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2014
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.71 KB | None | 0 0
  1. using (ExchangeServiceBinding esb = new ExchangeServiceBinding())
  2. {
  3. esb.Url = ConfigurationManager.AppSettings["ExchangeWebServicesURL"].ToString();
  4. esb.RequestServerVersionValue = new RequestServerVersion();
  5. esb.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2007_SP1;
  6. esb.PreAuthenticate = true;
  7. esb.Credentials = new NetworkCredential(email, password);
  8. FindItemType findItemRequest = new FindItemType();
  9. // paging
  10. IndexedPageViewType ipvt = new IndexedPageViewType();
  11. ipvt.BasePoint = IndexBasePointType.Beginning;
  12. ipvt.MaxEntriesReturned = nombreMessage;
  13. ipvt.MaxEntriesReturnedSpecified = true;
  14. ipvt.Offset = offset;
  15. findItemRequest.Item = ipvt;
  16. // filter by dates
  17. AndType andType = new AndType();
  18. List<SearchExpressionType> searchExps = new List<SearchExpressionType>();
  19. RestrictionType restriction = new RestrictionType();
  20. PathToUnindexedFieldType pteft = new PathToUnindexedFieldType
  21. {
  22. FieldURI = UnindexedFieldURIType.itemDateTimeSent
  23. };
  24. IsGreaterThanOrEqualToType IsGreaterThanOrEqualTo = new IsGreaterThanOrEqualToType
  25. {
  26. Item = pteft,
  27. FieldURIOrConstant = new FieldURIOrConstantType
  28. {
  29. Item = new ConstantValueType
  30. {
  31. Value = DateTime.Today.AddDays(-6d).ToString()
  32. }
  33. }
  34. };
  35. searchExps.Add(IsGreaterThanOrEqualTo);
  36.  
  37. IsLessThanOrEqualToType IsLessThanOrEqualTo = new IsLessThanOrEqualToType
  38. {
  39. Item = pteft,
  40. FieldURIOrConstant = new FieldURIOrConstantType
  41. {
  42. Item = new ConstantValueType
  43. {
  44. Value = DateTime.Today.AddDays(1d).ToString()
  45. }
  46. }
  47. };
  48. searchExps.Add(IsLessThanOrEqualTo);
  49. andType.Items = searchExps.ToArray();
  50. restriction.Item = andType;
  51. findItemRequest.Restriction = restriction;
  52. //// Define the sort order of items.
  53. FieldOrderType[] fieldsOrder = new FieldOrderType[1];
  54. fieldsOrder[0] = new FieldOrderType();
  55. PathToUnindexedFieldType dateOrder = new PathToUnindexedFieldType
  56. {
  57. FieldURI = UnindexedFieldURIType.itemDateTimeReceived
  58. };
  59. fieldsOrder[0].Item = dateOrder;
  60. fieldsOrder[0].Order = SortDirectionType.Descending;
  61. findItemRequest.SortOrder = fieldsOrder;
  62. findItemRequest.Traversal = ItemQueryTraversalType.Shallow;
  63. // define which item properties are returned in the response
  64. findItemRequest.ItemShape = new ItemResponseShapeType
  65. {
  66. BaseShape = DefaultShapeNamesType.IdOnly
  67. };
  68. // identify which folder to search
  69. DistinguishedFolderIdType[] folderIDArray = new DistinguishedFolderIdType[1];
  70. folderIDArray[0] = new DistinguishedFolderIdType { Id = DistinguishedFolderIdNameType.inbox };
  71. // add folders to request
  72. findItemRequest.ParentFolderIds = folderIDArray;
  73. // find the messages
  74. FindItemResponseType findItemResponse = esb.FindItem(findItemRequest);
  75. //-------------
  76. ArrayOfResponseMessagesType responseMessages = findItemResponse.ResponseMessages;
  77. ResponseMessageType responseMessage = responseMessages.Items[0];
  78. if (responseMessage is FindItemResponseMessageType)
  79. {
  80. FindItemResponseMessageType firmt = (responseMessage as FindItemResponseMessageType);
  81. *******FindItemParentType fipt = firmt.RootFolder;********
  82. object obj = fipt.Item;
  83. // FindItem contains an array of items.
  84. ArrayOfRealItemsType realitems = (obj as ArrayOfRealItemsType);
  85. ItemType[] items = realitems.Items;
  86. // if no messages were found, then return null -- we're done
  87. if (items == null || items.Count() <= 0)
  88. return null;
  89. // FindItem never gets "all" the properties, so now that we've found them all, we need to get them all.
  90. BaseItemIdType[] itemIds = new BaseItemIdType[items.Count()];
  91. for (int i = 0; i < items.Count(); i++)
  92. itemIds[i] = items[i].ItemId;
  93. GetItemType getItemType = new GetItemType
  94. {
  95. ItemIds = itemIds,
  96. ItemShape = new ItemResponseShapeType
  97. {
  98. BaseShape = DefaultShapeNamesType.AllProperties,
  99. BodyType = BodyTypeResponseType.Text,
  100. BodyTypeSpecified = true,
  101. AdditionalProperties = new BasePathToElementType[] {
  102. new PathToUnindexedFieldType { FieldURI = UnindexedFieldURIType.itemDateTimeSent },
  103. new PathToUnindexedFieldType { FieldURI = UnindexedFieldURIType.messageFrom },
  104. new PathToUnindexedFieldType { FieldURI = UnindexedFieldURIType.messageIsRead },
  105. new PathToUnindexedFieldType { FieldURI = UnindexedFieldURIType.messageSender },
  106. new PathToUnindexedFieldType { FieldURI = UnindexedFieldURIType.messageToRecipients },
  107. new PathToUnindexedFieldType { FieldURI = UnindexedFieldURIType.messageCcRecipients },
  108. new PathToUnindexedFieldType { FieldURI = UnindexedFieldURIType.messageBccRecipients }
  109. }
  110. }
  111. };
  112. GetItemResponseType getItemResponse = esb.GetItem(getItemType);
  113. messages = ReadItems(getItemResponse, items.Count());
  114. }
  115.  
  116. // greater or equal to
  117. string dateStart = DateTime.Today.add(-6d);
  118. string dateEnd = DateTime.Today.Add(1d);
  119.  
  120. PathToUnindexedFieldType dateSentPath = new PathToUnindexedFieldType();
  121. dateSentPath.FieldURI = UnindexedFieldURIType.itemDateTimeSent;
  122. IsGreaterThanOrEqualToType IsGreaterThanOrEqual = new IsGreaterThanOrEqualToType();
  123. IsGreaterThanOrEqual.Item = dateSentPath;
  124. FieldURIOrConstantType dateConstant = new FieldURIOrConstantType();
  125. ConstantValueType dateConstantValue = new ConstantValueType();
  126. dateConstantValue.Value = string.Format("{0}-{1}-{2}T00:00:00Z", dateStart.Year.ToString(), dateStart.Month.ToString(), dateStart.Day.ToString());
  127. dateConstant.Item = dateConstantValue;
  128. IsGreaterThanOrEqual.FieldURIOrConstant = dateConstant;
  129.  
  130. // less than or equal to
  131. PathToUnindexedFieldType dateSentPath1 = new PathToUnindexedFieldType();
  132. dateSentPath1.FieldURI = UnindexedFieldURIType.itemDateTimeSent;
  133. IsLessThanOrEqualToType lessThanOrEqualTo = new IsLessThanOrEqualToType();
  134. lessThanOrEqualTo.Item = dateSentPath1;
  135. FieldURIOrConstantType dateConstant1 = new FieldURIOrConstantType();
  136. ConstantValueType dateConstantValue1 = new ConstantValueType();
  137. dateConstantValue1.Value = string.Format("{0}-{1}-{2}T00:00:00Z", dateEnd.Year.ToString(), dateEnd.Month.ToString(), dateEnd.Day.ToString());
  138. dateConstant1.Item = dateConstantValue1;
  139. lessThanOrEqualTo.FieldURIOrConstant = dateConstant1;
  140.  
  141. RestrictionType restriction = new RestrictionType();
  142. AndType andType = new AndType();
  143. andType.Items = new SearchExpressionType[] { lessThanOrEqualTo, IsGreaterThanOrEqual };
  144. restriction.Item = andType;
  145. findItemRequest.Restriction = restriction;
  146.  
  147. DateTime.Today.AddDays(15).ToString("yyyy-MM-ddThh:mm:ssZ")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement