• 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

     

  • 相关阅读:
    HDU-3336-Count the string(扩展KMP)
    洛谷-P3805-Manacher模板
    洛谷-p5410-扩展KMP模板
    HDU-2594-Simpsons' Hidden Talents(kmp, 扩展kmp)
    POJ-3080-Blue jeans(KMP, 暴力)
    [办公应用]两个单独的列数据快速变为两列匹配关联数据
    [办公应用]如何将单词中的部分字母加下划线
    [办公应用]word 2007:全屏快捷键,让复制图片保持原样大小(office 全屏快捷键)
    [办公自动化]如何让excel图表标签中显示最新值数据
    [计算机故障处理]无法访问网络共享资源
  • 原文地址:https://www.cnblogs.com/tuenbo/p/9870396.html
Copyright © 2020-2023  润新知