从 EWS ExchangeVersion.Exchange2013 与 2010 中删除电子邮件

本文关键字:删除 电子邮件 2010 EWS ExchangeVersion Exchange2013 | 更新日期: 2023-09-27 18:32:19

我的测试代码使用 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 包交换 Web 服务,如果有帮助,这就是我的代码如何识别存在Exchange2013

从 EWS ExchangeVersion.Exchange2013 与 2010 中删除电子邮件

这对我有用:

item.Delete(DeleteMode.MoveToDeletedItems);

其中项目是电子邮件