如何使用 JavaMail 从子文件夹中获取邮件?
How to get messages from subfolders using JavaMail?
我正在使用 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");
我收到 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)
IMAPFolder
API 文档说文件夹上有一个方法 getFolder()。获得收件箱文件夹后,对该文件夹调用 getFolder()
并传递子文件夹名称。
这里是参考https://eclipse-ee4j.github.io/javamail/docs/api/com/sun/mail/imap/IMAPFolder.html
您可能使用了错误的 IMAP 文件夹分隔符。 IMAP文件夹分隔符不规范,可以这样确定:
char separator = store.getDefaultFolder().getSeparator();
最常用的分隔符是“.”。和 ”/”。我想“/”是您的正确选择。 store.getFolder()
能够访问嵌套的子文件夹:
// assuming that "/" is the right separator
Folder folder = store.getFolder("inbox/subfolder");
我正在使用 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");
我收到 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)
IMAPFolder
API 文档说文件夹上有一个方法 getFolder()。获得收件箱文件夹后,对该文件夹调用 getFolder()
并传递子文件夹名称。
这里是参考https://eclipse-ee4j.github.io/javamail/docs/api/com/sun/mail/imap/IMAPFolder.html
您可能使用了错误的 IMAP 文件夹分隔符。 IMAP文件夹分隔符不规范,可以这样确定:
char separator = store.getDefaultFolder().getSeparator();
最常用的分隔符是“.”。和 ”/”。我想“/”是您的正确选择。 store.getFolder()
能够访问嵌套的子文件夹:
// assuming that "/" is the right separator
Folder folder = store.getFolder("inbox/subfolder");