Exemplo n.º 1
0
        public IAsyncResult BeginEwsCall(AsyncCallback callback, object state)
        {
            SearchMailboxesParameters searchMailboxesParameters = new SearchMailboxesParameters();

            searchMailboxesParameters.SearchQueries            = DiscoveryEwsClient.GetMailboxQueries(this.mailboxes, this.searchCriteria, this.pagingInfo);
            searchMailboxesParameters.ResultType               = DiscoveryEwsClient.GetSearchType(this.searchCriteria.SearchType);
            searchMailboxesParameters.SortBy                   = DiscoveryEwsClient.GetSortbyProperty(this.pagingInfo.SortBy);
            searchMailboxesParameters.SortOrder                = DiscoveryEwsClient.GetSortDirection(this.pagingInfo.SortBy);
            searchMailboxesParameters.PerformDeduplication     = this.pagingInfo.ExcludeDuplicates;
            searchMailboxesParameters.PageSize                 = this.pagingInfo.PageSize;
            searchMailboxesParameters.PageDirection            = DiscoveryEwsClient.GetPageDirection(this.pagingInfo.Direction);
            searchMailboxesParameters.PageItemReference        = ((this.pagingInfo.SortValue == null) ? null : this.pagingInfo.SortValue.ToString());
            searchMailboxesParameters.PreviewItemResponseShape = DiscoveryEwsClient.GetPreviewItemResponseShape(this.pagingInfo.BaseShape, this.pagingInfo.AdditionalProperties);
            if (this.searchCriteria.QueryCulture != null && !string.IsNullOrEmpty(this.searchCriteria.QueryCulture.Name))
            {
                searchMailboxesParameters.Language = this.searchCriteria.QueryCulture.Name;
            }
            return(this.service.BeginSearchMailboxes(callback, state, searchMailboxesParameters));
        }
Exemplo n.º 2
0
        private void DoMailboxSearchPreviewItems(ExchangeService oExchangeService, string[] sMailboxIds, string sSearchText, MailboxSearchLocation oMailboxSearchLocation, SearchResultType oSearchResultType, int iPageSize, ref ListView oListView)
        {
            this.Cursor = Cursors.WaitCursor;

            //// Note: Specific RBAC Audit permissions needs to be set to use eDiscovery
            //// http://gsexdev.blogspot.com/2014/01/paging-ediscovery-results-with-ews.html
            //// http://technet.microsoft.com/en-us/library/dd298021(v=exchg.150).aspx#roles


            ServiceResponseCollection <SearchMailboxesResponse> oServiceResponseCollection = null;

            int iMbCount = 0;

            MailboxSearchScope[] oMailboxSearchScope = new MailboxSearchScope[sMailboxIds.Length];
            foreach (string sMailboxId in sMailboxIds)
            {
                oMailboxSearchScope[iMbCount] = new MailboxSearchScope(sMailboxId, oMailboxSearchLocation);
                iMbCount++;
            }
            MailboxQuery oMailboxQuery = new MailboxQuery(sSearchText, oMailboxSearchScope);

            MailboxQuery[] arrMailboxQuery = { oMailboxQuery };


            SearchMailboxesParameters oSearchMailboxesParameters = new SearchMailboxesParameters();

            oSearchMailboxesParameters.SearchQueries        = arrMailboxQuery;
            oSearchMailboxesParameters.PageSize             = iPageSize;
            oSearchMailboxesParameters.PageDirection        = SearchPageDirection.Next;
            oSearchMailboxesParameters.PerformDeduplication = false;
            oSearchMailboxesParameters.ResultType           = oSearchResultType;

            ////*********************************************************************//
            //PreviewItemResponseShape PIR = new PreviewItemResponseShape();

            //ExtendedPropertyDefinition epd1 = new
            //    ExtendedPropertyDefinition(0x001A, MapiPropertyType.String); // PR_MESSAGE_CLASS
            //ExtendedPropertyDefinition epd2 = new
            //    ExtendedPropertyDefinition(0x0037, MapiPropertyType.String);  // PR_SUBJECT
            //ExtendedPropertyDefinition[] epa = new ExtendedPropertyDefinition[] { epd1, epd2 };
            //PIR.BaseShape = PreviewItemBaseShape.Default;
            //PIR.AdditionalProperties = epa;
            //oSearchMailboxesParameters.PreviewItemResponseShape = PIR;
            ////*********************************************************************//


            ListViewItem oListItem = null;

            oListView.Clear();
            oListView.View      = View.Details;
            oListView.GridLines = true;
            oListView.Columns.Add("Count", 60, HorizontalAlignment.Left);
            oListView.Columns.Add("MailboxId", 500, HorizontalAlignment.Left);
            oListView.Columns.Add("PrimarySmtpAddress", 250, HorizontalAlignment.Left);
            oListView.Columns.Add("Id", 200, HorizontalAlignment.Left);
            oListView.Columns.Add("ParentId", 200, HorizontalAlignment.Left);
            oListView.Columns.Add("Subject", 500, HorizontalAlignment.Left);
            oListView.Columns.Add("ItemClass", 150, HorizontalAlignment.Left);
            oListView.Columns.Add("CreatedTime", 150, HorizontalAlignment.Left);
            oListView.Columns.Add("SentTime", 150, HorizontalAlignment.Left);
            oListView.Columns.Add("ToRecipients", 150, HorizontalAlignment.Left);
            oListView.Columns.Add("CcRecipients", 150, HorizontalAlignment.Left);
            oListView.Columns.Add("BccRecipients", 150, HorizontalAlignment.Left);
            oListView.Columns.Add("HasAttachment", 100, HorizontalAlignment.Left);
            oListView.Columns.Add("Importance", 100, HorizontalAlignment.Left);
            oListView.Columns.Add("OwaLink", 500, HorizontalAlignment.Left);

            oServiceResponseCollection = _CurrentService.SearchMailboxes(oSearchMailboxesParameters);
            //oSearchMailboxesParameters.PreviewItemResponseShape = new PreviewItemResponseShape( baseshape, extended properties)

            //int iMailboxCount = 0;
            int iResponseCount = 0;

            if (oServiceResponseCollection.OverallResult == ServiceResult.Success)
            {
                if ((oServiceResponseCollection.Count > 0) && (oServiceResponseCollection[0].SearchResult.PreviewItems != null))
                {
                    do
                    {
                        //iMailboxCount++;
                        //iResponseCount = 0;


                        oSearchMailboxesParameters.PageItemReference = oServiceResponseCollection[0].SearchResult.PreviewItems[oServiceResponseCollection[0].SearchResult.PreviewItems.Length - 1].SortValue;


                        foreach (SearchPreviewItem oSearchPreviewItem in oServiceResponseCollection[0].SearchResult.PreviewItems)
                        {
                            iResponseCount++;

                            oListItem = new ListViewItem(iResponseCount.ToString());
                            //oListItem = new ListViewItem(iMailboxCount.ToString() + " : " + iResponseCount.ToString(), 0);

                            oListItem.SubItems.Add(oSearchPreviewItem.Mailbox.MailboxId);
                            oListItem.SubItems.Add(oSearchPreviewItem.Mailbox.PrimarySmtpAddress);
                            oListItem.SubItems.Add(oSearchPreviewItem.Id.UniqueId);

                            if (oSearchPreviewItem.ParentId != null)
                            {
                                oListItem.SubItems.Add(oSearchPreviewItem.ParentId.UniqueId);
                            }
                            else
                            {
                                oListItem.SubItems.Add("");
                            }

                            oListItem.SubItems.Add(oSearchPreviewItem.Subject);
                            oListItem.SubItems.Add(oSearchPreviewItem.ItemClass);

                            if (oSearchPreviewItem.CreatedTime != null)
                            {
                                oListItem.SubItems.Add(oSearchPreviewItem.CreatedTime.ToString());
                            }
                            else
                            {
                                oListItem.SubItems.Add("");
                            }

                            if (oSearchPreviewItem.SentTime != null)
                            {
                                oListItem.SubItems.Add(oSearchPreviewItem.SentTime.ToString());
                            }
                            else
                            {
                                oListItem.SubItems.Add("");
                            }

                            if (oSearchPreviewItem.Sender != null)
                            {
                                oListItem.SubItems.Add(oSearchPreviewItem.Sender);
                            }
                            else
                            {
                                oListItem.SubItems.Add("");
                            }

                            if (oSearchPreviewItem.ToRecipients != null)
                            {
                                oListItem.SubItems.Add(ExpandAddrerssArray(oSearchPreviewItem.ToRecipients));
                            }
                            else
                            {
                                oListItem.SubItems.Add("");
                            }

                            if (oSearchPreviewItem.CcRecipients != null)
                            {
                                oListItem.SubItems.Add(ExpandAddrerssArray(oSearchPreviewItem.CcRecipients));
                            }
                            else
                            {
                                oListItem.SubItems.Add("");
                            }

                            if (oSearchPreviewItem.BccRecipients != null)
                            {
                                oListItem.SubItems.Add(ExpandAddrerssArray(oSearchPreviewItem.BccRecipients));
                            }
                            else
                            {
                                oListItem.SubItems.Add("");
                            }

                            oListItem.SubItems.Add(oSearchPreviewItem.HasAttachment.ToString());
                            oListItem.SubItems.Add(oSearchPreviewItem.Importance.ToString());
                            oListItem.SubItems.Add(oSearchPreviewItem.OwaLink);


                            //if (oSearchPreviewItem.ExtendedProperties != null)
                            //{
                            //    foreach (ExtendedProperty oProp in oSearchPreviewItem.ExtendedProperties)
                            //    {
                            //        System.Diagnostics.Debug.WriteLine("Name:" + oProp.PropertyDefinition.Name);
                            //        System.Diagnostics.Debug.WriteLine("Id:" + oProp.PropertyDefinition.Id.ToString());
                            //        System.Diagnostics.Debug.WriteLine("Tag:"  + oProp.PropertyDefinition.Tag.ToString());
                            //        System.Diagnostics.Debug.WriteLine("Value:" + oProp.Value.ToString());
                            //        System.Diagnostics.Debug.WriteLine("------------------------------");
                            //    }
                            //}


                            oListItem.Tag = new ItemTag(oSearchPreviewItem.Id, oSearchPreviewItem.ItemClass);
                            oListView.Items.AddRange(new ListViewItem[] { oListItem });;
                            oListItem = null;
                        }

                        oServiceResponseCollection = _CurrentService.SearchMailboxes(oSearchMailboxesParameters);
                    } while (oServiceResponseCollection[0].SearchResult.ItemCount > 0);
                }
            }
            else
            {
            }

            this.Cursor = Cursors.Default;
        }