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

 

转载于:https://www.cnblogs.com/tuenbo/p/9870396.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
发送邮件的方法是通过微软的Exchange服务的webservice接口来实现的。你可以使用C#编程语言来调用这个接口发送邮件。首先,你需要验证Exchange服务的webservice是否正常,可以通过访问"https://xx.xxxxx.com/ews/exchange.asmx"来检查是否能够打开该链接。如果能够打开,说明Exchange服务的webservice正常工作。 接下来,你可以使用C#的代码来调用Exchange服务的webservice接口发送邮件。你可以使用.NET Framework提供的System.Net命名空间中的相关类来实现。具体的实现步骤如下: 1. 创建一个ExchangeService对象,并设置其Credentials属性为你的Exchange账户的凭据,以便进行身份验证。 2. 设置ExchangeService对象的Url属性为Exchange服务的webservice接口的URL,例如"https://xx.xxxxx.com/ews/exchange.asmx"。 3. 创建一个EmailMessage对象,并设置其相关属性,如发送者、收件人、主题、正文等。 4. 调用ExchangeService对象的Send方法,将EmailMessage对象作为参数传入,即可发送邮件。 需要注意的是,发送邮件的代码需要在能够访问Exchange服务的网络环境中运行,并且需要确保你的Exchange账户具有发送邮件的权限。 希望以上信息对你有帮助!\[1\] #### 引用[.reference_title] - *1* [C# 通过Exchange server 发送邮件](https://blog.csdn.net/liulv_yan/article/details/121148086)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值