首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用EWS从主邮箱获取多个邮箱

使用EWS从主邮箱获取多个邮箱
EN

Stack Overflow用户
提问于 2015-10-15 14:08:37
回答 1查看 1.1K关注 0票数 2

我们希望能够从我们的交换服务器中包含的所有邮箱中获得未读邮件。然后,我们将在应用程序中处理它们,然后删除它们。未读邮件的数量总是占很小的比例。

我们的第一个想法是创建一个主邮箱,让他完全访问其他邮箱(使用EPS),并使用EWS获取未读邮件。我们试过这样做:

代码语言:javascript
复制
        //Define the service 
        ExchangeService service = new ExchangeService(SERVICE_VERSION);
        service.Url = new Uri(SERVICE_URL);
        service.Credentials = new WebCredentials("MyAdmin", "MyPassword");

        //define our search
        FolderView viewFolders = new FolderView(int.MaxValue) { Traversal = FolderTraversal.Deep, PropertySet = new PropertySet(BasePropertySet.IdOnly) };
        ItemView viewEmails = new ItemView(int.MaxValue) { PropertySet = new PropertySet(BasePropertySet.IdOnly) };
        SearchFilter unreadFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false));

        //search all items in Inbox and subfolders
        FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Root, unreadFilter, viewEmails);

        //bind the result
        ServiceResponseCollection<GetItemResponse> responseList =
               service.BindToItems(findResults.Select(item => item.Id), new PropertySet(BasePropertySet.FirstClassProperties,EmailMessageSchema.ReceivedBy, EmailMessageSchema.From, EmailMessageSchema.Subject, EmailMessageSchema.Attachments));

但是,这只会从MyAdmin邮箱获得未读邮件。通过进一步的调查,我们发现了从另一个特定邮箱获取未读邮件的方法:

代码语言:javascript
复制
        //Define the service 
        ExchangeService service = new ExchangeService(SERVICE_VERSION);
        service.Url = new Uri(SERVICE_URL);
        service.Credentials = new WebCredentials("MyAdmin", "MyPassword");

        //define our search
        FolderView viewFolders = new FolderView(int.MaxValue) { Traversal = FolderTraversal.Deep, PropertySet = new PropertySet(BasePropertySet.IdOnly) };
        ItemView viewEmails = new ItemView(int.MaxValue) { PropertySet = new PropertySet(BasePropertySet.IdOnly) };
        SearchFilter unreadFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false));

        //define the user mailbox
        var userMailbox = new Mailbox("MyUser@Domain.com");
        var folderId = new FolderId(WellKnownFolderName.Inbox, userMailbox);

        //search all items in Inbox
        var userItems = service.FindItems(folderId, unreadFilter, viewEmails);

这个解决方案的问题是对于3000个邮箱,我们必须查询3000次EWS才能从每个邮箱获得未读邮件(知道许多邮箱不会有未读邮件)。

是否有办法在一个电话中从exchange服务器的每个邮箱获取所有未读邮件?我们正在使用exchange 2013与最新的EWS。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-19 13:31:26

我设法找到了一种方式来满足我的要求--几乎--把所有未读的邮件都接到一个电话。

诀窍是这样的。我添加了一个传输规则与ECP,使MyAdmin在密件抄送每收到的电子邮件。从那里,我处理一个电话,根据需要,所有邮箱的未读电子邮件。我还会记录我在数据库中处理过的电子邮件,最后,我会创建另一个程序来销毁我处理过的所有其他邮箱中的电子邮件。

简单,但干净,工作。希望它能帮助人们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33150739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档