删除EWS ExchangeVersion.Exchange2013与2010年的电子邮件

时间:2016-01-29 00:06:52

标签: c# exchange-server exchangewebservices exchange-server-2010 exchange-server-2013

我的测试代码适用于使用ExchangeVersion.Exchange2010删除电子邮件,如下所示。

        var finalsearchFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.And)
                {
                    new SearchFilter.IsGreaterThan(EmailMessageSchema.DateTimeReceived, DateTime.Now.AddDays(-15)),
                };

        view.OrderBy.Add(ItemSchema.DateTimeReceived, SortDirection.Descending);

        view.Traversal = ItemTraversal.Shallow;
        ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
        service.Credentials = new WebCredentials("user@example.com", "password", "domain");
        service.AutodiscoverUrl("user@example.com");
        FindItemsResults<Item> items = service.FindItems(new FolderId(WellKnownFolderName.Inbox, new Mailbox("mailboxName@example.com")), finalsearchFilter, view);

        if (items.Count() != 0)
        {
            IEnumerable<ItemId> itemIds = from p in items.Items select p.Id;
            service.DeleteItems(itemIds, DeleteMode.SoftDelete, null, null);
        }

但如果我将2010年改为2013年,我会立即收到错误消息。

Microsoft.Exchange.WebServices.Data.ServiceVersionException : Exchange Server doesn't support the requested version.

有人能指出我错过的正确方向吗?当我查看msdn教程时,他们在调用exchangeservice对象时仍然使用2010和有时候的2007引用。我还看到其他帖子说我需要专门把ExchangeVersion.Exchange2010放进去,但我已经拥有它了。我还下载了最新的nuget包交换webservices,如果它有帮助,我的代码如何识别那些Exchange2013

1 个答案:

答案 0 :(得分:1)

这对我有用:

item.Delete(DeleteMode.MoveToDeletedItems);

其中的项目是电子邮件