zoukankan      html  css  js  c++  java
  • c# Exchange 收件箱获取。

            public List<Email> GetInbox()
            {
                try
                {
    
                    List<Email> lstEmails = new List<Email>();
    
                    FolderId folder = FindFolderIdByDisplayName(service, "L1 Support", WellKnownFolderName.Inbox);
    
                    int offset = 0;
                    int pageSize = 20;
                    bool MoreItems = true;
    
                    //search in pages
                    while (MoreItems)
                    {
                        ItemView view = new ItemView(20, 0, OffsetBasePoint.Beginning);
                        view.PropertySet = new PropertySet(BasePropertySet.IdOnly, ItemSchema.Subject, ItemSchema.DateTimeReceived);
                        view.OrderBy.Add(ItemSchema.DateTimeReceived, SortDirection.Ascending);
                        FindItemsResults<Item> findResults = service.FindItems(folder, SetFilter(), view);
                        foreach (Item myItem in findResults.Items)
                        {
                            //body message does not include in returned properties, get message details
                            Item item = Item.Bind(service, myItem.Id);
                            lstEmails.Add(new Email()
                            {
    
                                Body = item.Body.Text,
                                Mail_cc = item.DisplayCc,
                                Mail_from = item.LastModifiedName,
                                IsRead = item.IsNew,
                                Subject = item.Subject,
                                CreateOn = item.DateTimeCreated
                            });
                        }
    
                        //last page
                        if (!findResults.MoreAvailable)
                            MoreItems = false;
    
                        //next page
                        if (MoreItems)
                            offset += pageSize;
                    }
    
                    return lstEmails;
                }
                catch (Exception ex)
                {
    
                    throw ex;
                }
    
            }
            public FolderId FindFolderIdByDisplayName(ExchangeService service, WellKnownFolderName SearchFolder)
            {
                // Specify the root folder to be searched.
                Folder rootFolder = Folder.Bind(service, SearchFolder);
                return rootFolder.Id;
            }
            public FolderId FindFolderIdByDisplayName(ExchangeService service, string DisplayName, WellKnownFolderName SearchFolder)
            {
                // Specify the root folder to be searched.
                Folder rootFolder = Folder.Bind(service, SearchFolder);
    
                // Loop through the child folders of the folder being searched.
                foreach (Folder folder in rootFolder.FindFolders(new FolderView(100)))
                {
                    // If the display name of the current folder matches the specified display name, return the folder’s unique identifier.
                    if (folder.DisplayName == DisplayName)
                    {
                        return folder.Id;
                    }
                }
                return null;
            }
            /// <summary>
            /// 过滤器
            /// </summary>
            /// <returns></returns>
            private static SearchFilter SetFilter()
            {
    
    
                SearchFilter SearchFilter1 = new SearchFilter.ContainsSubstring(ItemSchema.Subject, "【NA Major Impact】 【P1】 System Down");
                SearchFilter SearchFilter2 = new SearchFilter.ContainsSubstring(ItemSchema.Subject, "【NA Major Impact】 【P2】 System Slow");
                SearchFilter SearchFilter3 = new SearchFilter.ContainsSubstring(ItemSchema.Subject, "【Brazil Major Impact】 【P1】 System Down");
                SearchFilter SearchFilter4 = new SearchFilter.ContainsSubstring(ItemSchema.Subject, "【Brazil Major Impact】 【P2】 System Slow");
    
                //筛选今天的邮件
                SearchFilter start = new SearchFilter.IsGreaterThanOrEqualTo(EmailMessageSchema.DateTimeCreated, Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 00:00:00")));
                SearchFilter end = new SearchFilter.IsLessThanOrEqualTo(EmailMessageSchema.DateTimeCreated, Convert.ToDateTime(DateTime.Now.ToString()));
    
                SearchFilter IsRead = new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false);
    
                SearchFilter.SearchFilterCollection secondLevelSearchFilterCollection1 = new SearchFilter.SearchFilterCollection(LogicalOperator.And,
                                                                                                                               start,
                                                                                                                               end);
    
                SearchFilter.SearchFilterCollection secondLevelSearchFilterCollection2 = new SearchFilter.SearchFilterCollection(LogicalOperator.Or,
                                                                                                                             SearchFilter1, SearchFilter2, SearchFilter3, SearchFilter4);
    
                SearchFilter.SearchFilterCollection firstLevelSearchFilterCollection = new SearchFilter.SearchFilterCollection(LogicalOperator.And,
                                                                                                                                   secondLevelSearchFilterCollection1,
                                                                                                                                   secondLevelSearchFilterCollection2);
    
    
                return firstLevelSearchFilterCollection;
            }

    写这个给自己Mark 一下, 关键是这个多条件筛选,同时有OR 和AND 条件,网上资料很少,从微软官网的 Demo 里找到案例。

    链接如下

    https://code.msdn.microsoft.com/Exchange-2013-101-Code-3c38582c

     

  • 相关阅读:
    LeetCode【21】 Merge Two Sorted Lists
    LeetCode【2】Add two numbers
    LeetCode【125】Valid Palindrome
    LeetCode【9】Palindrome Number
    LeetCode【20】Valid Parentheses
    LeetCode【1】Two Sum
    LeetCode【8】string to integer(atoi)
    LeetCode【168】Excel Sheet Column Title
    lambda表达式
    UML类图
  • 原文地址:https://www.cnblogs.com/tuenbo/p/9870396.html
Copyright © 2011-2022 走看看