【发布时间】:2022-01-23 13:19:07
【问题描述】:
我使用此代码以编程方式搜索 Outlook 365 收件箱:
Session session = Session.getDefaultInstance(new Properties());
Store store = session.getStore("imaps");
store.connect("outlook.office365.com", 993, EMAIL, PASSWORD);
Folder emailFolder = store.getFolder("INBOX");
emailFolder.open(Folder.READ_WRITE);
Message[] messages = emailFolder.search(new ReceivedDateTerm(LT,
Date.from(Instant.now().minus(14, DAYS))));
因此执行 IMAP BEFORE search,例如SEARCH BEFORE 16-Oct-2021 ALL
但返回的messages 数组始终为空,尽管有数千封超过 14 天的邮件。如果使用非常短的间隔,则结果为非空。
Office 365 提供以下功能
CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS MOVE ID UNSELECT CLIENTACCESSRULES CLIENTNETWORKPRESENCELOCATION BACKENDAUTHENTICATE CHILDREN IDLE NAMESPACE LITERAL+
是否有任何解决方案和/或解决方法来执行服务器端搜索,例如“早于”和“早于”等日期。使用可靠的 IMAP 和 Office 365?
【问题讨论】:
-
愚蠢的问题,但你确定邮件没有被归档到另一个文件夹吗?除了“ALL”是多余的之外,搜索看起来还不错。
-
在我的情况下
emailFolder.getMessages()返回 49000 多条消息,其中大多数超过 14 天。我认为它类似于stackoverflow.com/q/36697702,我询问社区其他人如何通过 IMAP 和搜索使用 Office 365。
标签: java office365 jakarta-mail imap