我正在使用JavaMail API连接到Outlook和阅读消息。我的Outlook帐户在INBOX下有子文件夹列表。我可以使用
从收件箱中获取所有邮件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");
我收到FolderNotFoundException
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)
答案 0 :(得分:1)
IMAPFolder
API文档说文件夹中有一个方法getFolder()。收到收件箱文件夹后,请在该文件夹上调用getFolder()
,并传递子文件夹名称。
这里是参考文献https://eclipse-ee4j.github.io/javamail/docs/api/com/sun/mail/imap/IMAPFolder.html
答案 1 :(得分:1)
您可能使用了错误的 IMAP 文件夹分隔符。 IMAP 文件夹分隔符没有标准化,可以这样确定:
char separator = store.getDefaultFolder().getSeparator();
最常见的分隔符是“.”和 ”/”。我想在您的情况下,“/”是正确的选择。 store.getFolder()
能够访问嵌套的子文件夹:
// assuming that "/" is the right separator
Folder folder = store.getFolder("inbox/subfolder");