如何使用JavaMail从子文件夹获取消息?

如何使用JavaMail从子文件夹获取消息?,java,outlook,jakarta-mail,Java,Outlook,Jakarta Mail,我正在使用JavaMail API连接outlook并阅读邮件。我在outlook帐户的收件箱下有子文件夹列表。我可以通过以下方式从收件箱获取所有邮件: Store store = session.getStore("imaps"); store.connect("outlook.office365.com", 993, MY_MAIL, MY_PASS); Folder inbox = store.getFolder("Inbox"); 但我无法读取子文件夹中的邮件。要从名为'subFold

我正在使用JavaMail API连接outlook并阅读邮件。我在outlook帐户的收件箱下有子文件夹列表。我可以通过以下方式从收件箱获取所有邮件:

Store store = session.getStore("imaps");
store.connect("outlook.office365.com", 993, MY_MAIL, MY_PASS);
Folder inbox = store.getFolder("Inbox");
但我无法读取子文件夹中的邮件。要从名为
'subFolder'
的子文件夹中读取邮件,我已尝试:

Folder subFolder = store.getFolder("subFolder");
Folder subFolder = store.getFolder("Inbox\subFolder");
Folder subFolder = store.getFolder("Inbox.subFolder");
我收到一个FolderNotFound异常

javax.mail.FolderNotFoundException: Inbox.subFolder not found
    at com.sun.mail.imap.IMAPFolder.checkExists(IMAPFolder.java:452)
    at com.sun.mail.imap.IMAPFolder.open(IMAPFolder.java:1040)
    at com.sun.mail.imap.IMAPFolder.open(IMAPFolder.java:973)

IMAPFolder
API文档说明文件夹上有一个getFolder()方法。获取收件箱文件夹后,通过传递子文件夹名称,在此文件夹上调用
getFolder()


这是参考资料

您可能使用了错误的IMAP文件夹分隔符。IMAP文件夹分隔符不是标准化的,可以这样确定:

char separator = store.getDefaultFolder().getSeparator();
最常见的分隔符是“.”和“/”。我想对你来说,这个“/”是正确的选择
store.getFolder()
可以访问嵌套的子文件夹:

// assuming that "/" is the right separator
Folder folder = store.getFolder("inbox/subfolder"); 

逃避反斜杠也没有帮助。仍然存在相同的异常。它位于“收件箱”下。请尝试使用正斜杠“收件箱/子文件夹”IMAPFolder API文档说明文件夹上存在方法“getFolder()”。
一旦获得“收件箱”文件夹,请通过传递子文件夹名称调用此文件夹上的getFolder()。这是参考资料,非常感谢你的提示。非常不直观,至少对我来说是这样,但我使用的是:
foldersubfolder=store.getFolder(“收件箱”).getFolder(“子文件夹”)请相应编辑您的答案,以便我可以接受。谢谢