Example #1
0
        /// <summary>
        /// Gets the nr of items in a given folder
        /// </summary>
        /// <returns></returns>
        public long GetNrItemsInFolder(ChannelFolder folder)
        {
            var binding = ChannelHelper.BuildChannel(hostname, username, password);

            var findItemRequest = new FindItemType { Traversal = ItemQueryTraversalType.Shallow };
            var itemProperties = new ItemResponseShapeType { BaseShape = DefaultShapeNamesType.AllProperties };
            findItemRequest.ItemShape = itemProperties;

            var folderIdArray = new DistinguishedFolderIdType[2];
            folderIdArray[0] = new DistinguishedFolderIdType { Id = DistinguishedFolderIdNameType.inbox };

            findItemRequest.ParentFolderIds = folderIdArray;

            FindItemResponseType findItemResponse = binding.FindItem(findItemRequest);

            // Determine whether the request was a success.
            if (findItemResponse.ResponseMessages.Items[0].ResponseClass == ResponseClassType.Error)
                throw new Exception(findItemResponse.ResponseMessages.Items[0].MessageText);

            var responseMessage =
                (FindItemResponseMessageType) findItemResponse.ResponseMessages.Items[0];

            var mailboxItems = (ArrayOfRealItemsType)responseMessage.RootFolder.Item;

            if (mailboxItems.Items == null) return 0;

            return mailboxItems.Items.Length;
        }
Example #2
0
        /// <summary>
        /// Gets a list of all the items in the mailbox with all their properties.
        /// </summary>
        /// <returns></returns>
        public IEnumerable<MessageType> GetHeaders(ChannelFolder folder)
        {
            var binding = ChannelHelper.BuildChannel(hostname, username, password);

            var findItemRequest = new FindItemType { Traversal = ItemQueryTraversalType.Shallow };
            var itemProperties = new ItemResponseShapeType { BaseShape = DefaultShapeNamesType.AllProperties };

            findItemRequest.ItemShape = itemProperties;
            findItemRequest.ParentFolderIds = new BaseFolderIdType[] { new FolderIdType { Id = folder.FolderId } };

            FindItemResponseType findItemResponse = binding.FindItem(findItemRequest);

            foreach (FindItemResponseMessageType responseMessage in findItemResponse.ResponseMessages.Items)
            {
                if (responseMessage.ResponseClass == ResponseClassType.Success)
                {
                    ArrayOfRealItemsType mailboxItems = (ArrayOfRealItemsType) responseMessage.RootFolder.Item;

                    if (mailboxItems.Items == null)
                        yield break;

                    foreach (MessageType inboxItem in mailboxItems.Items)
                        yield return inboxItem;
                }
            }
        }