【问题标题】:Can't find folders in Exchange (EWS) : "Mailbox does not exist"在 Exchange (EWS) 中找不到文件夹:“邮箱不存在”
【发布时间】:2021-06-22 18:02:44
【问题描述】:

我正在使用 EWS 和 java 从 Outlook 邮箱中检索电子邮件。

我可以毫无问题地从收件箱中获取电子邮件:

  FolderId inbox=new FolderId(WellKnownFolderName.Inbox, new Mailbox(account));

  return service.findItems(inbox, new ItemView(15))
        .getItems()
        .stream()
        .map(item -> toEmail(item))
        .collect(toList());

我现在需要查看特定文件夹,我能找到的所有示例看起来都像这样:

private FolderId findSpecificFolder(ExchangeService service, String folderName) throws Exception {

    FolderView view = new FolderView(10);
    PropertySet prop= new PropertySet(BasePropertySet.IdOnly);
    prop.add(FolderSchema.DisplayName);

    view.setPropertySet(prop);
    view.setTraversal(FolderTraversal.Deep);

    FindFoldersResults findFolderResults = service.findFolders(WellKnownFolderName.Root, view);

    ...
}

但是对service.findFolders 的调用会产生异常:

microsoft.exchange.webservices.data.core.exception.service.remote.ServiceResponseException: Mailbox does not exist.

at microsoft.exchange.webservices.data.core.response.ServiceResponse.internalThrowIfNecessary(ServiceResponse.java:278)
at microsoft.exchange.webservices.data.core.response.ServiceResponse.throwIfNecessary(ServiceResponse.java:267)
at microsoft.exchange.webservices.data.core.request.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:165)
at microsoft.exchange.webservices.data.core.ExchangeService.internalFindFolders(ExchangeService.java:377)
at microsoft.exchange.webservices.data.core.ExchangeService.findFolders(ExchangeService.java:425)
at microsoft.exchange.webservices.data.core.ExchangeService.findFolders(ExchangeService.java:461)

我很困惑,因为当我刚刚获取收件箱内容时它工作得很好。所以邮箱确实存在!

有没有其他可行的方法?

【问题讨论】:

    标签: java exchangewebservices


    【解决方案1】:

    我找到了解决方法 - 但不确定为什么初始代码不起作用。

    虽然Folder.bind 对我有用,但它有效:

    private FolderId findSpecificFolder(ExchangeService service, String folderName) throws Exception {
    
        //reusing the Inbox FolderId that was working
        FolderId inbox=new FolderId(WellKnownFolderName.Inbox, new Mailbox(account));
    
        FolderView view = new FolderView(10);
        PropertySet prop= new PropertySet(BasePropertySet.IdOnly);
        prop.add(FolderSchema.DisplayName);
    
        view.setPropertySet(prop);
        view.setTraversal(FolderTraversal.Deep);
    
        //Binding the inboxFolder
        Folder inboxFolder=Folder.bind(service, inbox);
    
        FindFoldersResults subFolders=inboxFolder.findFolders(view);
    
        for (Folder subFolder : subFolders.getFolders()){
           ...
        } 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      • 1970-01-01
      • 2017-08-01
      • 2015-12-06
      • 2014-03-21
      • 2013-04-01
      相关资源
      最近更新 更多