从收件箱中的文件夹获取邮件-EWS

时间:2019-02-14 16:00:46

标签: c# exchangewebservices

我想访问我的交换收件箱中名为“ ITServiceDesk”的文件夹中的电子邮件。

我可以访问该文件夹,但是我不知道如何读取该文件夹中的邮件。

我正在访问这里的文件夹:

            var view = new FolderView(100);
            view.Traversal = FolderTraversal.Deep;
            var fileview = new ItemView(100);
            var filter = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "ITServiceDesk");

            // Read 100 mails
            foreach (var item in _service.FindFolders(WellKnownFolderName.Inbox, filter, view))
            {
                MessageBox.Show(item.DisplayName);
                foreach (EmailMessage email in _service.FindItems(WellKnownFolderName.Inbox, filter, fileview))
                {
                    email.Load(new PropertySet(EmailMessageSchema.ConversationTopic, ItemSchema.Attachments,
                        ItemSchema.TextBody));
                    MessageBox.Show(email.ConversationTopic);
                    MessageBox.Show(email.TextBody);
                }
            }

当我进入第二个foreach循环时,什么也没发生。消息框显示它可以找到文件夹,因为item.displayname是正确的。

2 个答案:

答案 0 :(得分:1)

如果使用代码查找文件夹,则只需在返回的Folder对象上调用findItem方法,例如

                foreach (var Folder in _service.FindFolders(WellKnownFolderName.Inbox, filter, view))
            {                   
                MessageBox.Show(Folder.DisplayName);

                foreach (EmailMessage email in Folder.FindItems(fileview))
                {
                    email.Load(new PropertySet(EmailMessageSchema.ConversationTopic, ItemSchema.Attachments,
                        ItemSchema.TextBody));
                    MessageBox.Show(email.ConversationTopic);
                    MessageBox.Show(email.TextBody);
                }
            }

答案 1 :(得分:0)

这是我网站上的一个例子:

FindItemsResults<Item> findResults 
                    = service.FindItems(WellKnownFolderName.Inbox, new ItemView( 10 ) );

foreach ( Item item in findResults.Items )
   Console.WriteLine( item.Subject );

请参见C#: Getting All Emails From Exchange using Exchange Web Services