【问题标题】:Retrieve emails from a non WellKnownFolder in Outlook从 Outlook 中的非知名文件夹中检索电子邮件
【发布时间】:2018-12-07 19:59:46
【问题描述】:

我正在使用 Microsoft.Exchange.WebServices 从 Outlook Exchange 收件箱中提取所有电子邮件,下面的代码完美运行

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

foreach (Item i in findResults.Items)
{
  countOfEmails++;
}

现在有一个请求从收件箱外的另一个用户创建的文件夹中提取电子邮件。我发现的任何东西都使用 MAPI 或 EAGetMail,但我需要使用交换网络服务。这可能吗?

**编辑

感谢@farbiondriven 使用他的代码进行了一些调整,我现在可以使用它了

ExchangeService service = EmailCredentials();

 // Return only folders that contain items.
 SearchFilter searchFilter = new SearchFilter.IsGreaterThan(FolderSchema.TotalCount, 0);

 FolderView view = new FolderView(10);
 // Unlike FindItem searches, folder searches can be deep traversals.

 view.Traversal = FolderTraversal.Deep;
 // Send the request to search the mailbox and get the results.

FindFoldersResults findFolderResults = service.FindFolders(WellKnownFolderName.MsgFolderRoot, searchFilter, view);

foreach (Folder folder in findFolderResults.Folders)
{
    if (folder.DisplayName == "MyFolder")
    {
        FindItemsResults<Item> findResults = service.FindItems(folder.Id, new ItemView(CountRec));

        foreach (Item i in findResults.Items)
        {
            countOfEmails++;
        }
    }
 }

【问题讨论】:

    标签: c# outlook exchangewebservices


    【解决方案1】:

    很遗憾,我无法测试它,但你可以试试这个吗?

    ExchangeService service = EmailCredentials();
    
    // Return only folders that contain items.
    SearchFilter searchFilter = new SearchFilter.IsGreaterThan(FolderSchema.TotalCount, 0);
    
    // Unlike FindItem searches, folder searches can be deep traversals.
    view.Traversal = FolderTraversal.Deep;
    
    // Send the request to search the mailbox and get the results.
    FindFoldersResults findFolderResults = service.FindFolders(WellKnownFolderName.Root, searchFilter, view);
    
    foreach (var folder in findFolderResults.Folders)
    {
        FindItemsResults<Item> findResults = service.FindItems(folder, new ItemView(CountRec));
    
        foreach (Item i in findResults.Items)
        {
            countOfEmails++;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多