如何使用JavaMail从子文件夹获取消息?
我正在使用JavaMail API连接outlook并阅读邮件。我在outlook帐户的收件箱下有子文件夹列表。我可以通过以下方式从收件箱获取所有邮件:如何使用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
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(“子文件夹”)代码>请相应编辑您的答案,以便我可以接受。谢谢