首页 > 解决方案 > 如何使用 IMAP java 实现按日期对电子邮件进行排序

问题描述

我想按日期对电子邮件进行排序,以便我可以获得包含所有对话的最新电子邮件,以及我可以在代码中忽略的其他电子邮件。

示例代码:

Session session = Session.getInstance(props, null);
        Store store = session.getStore();
        store.connect(HOST, USER, PASSWORD);
        IMAPFolder inbox = (IMAPFolder) store.getFolder("INBOX");
        inbox.open(Folder.READ_ONLY);
        SortTerm[] sortTerms = new SortTerm[1];
        sortTerms[0] = SortTerm.ARRIVAL;
        Message[] messages = inbox.getMessages();

标签: javajakarta-mailimap

解决方案


我看到你已经发现了SortTerm,所以你大部分时间都在那里。使用IMAPFolder.getSortedMessages方法:

Message[] messages = ((IMAPFolder)inbox).getSortedMessages(sortTerms);

请注意,这取决于您的服务器是否支持RFC 5256 定义的 SORT 扩展。如果没有,您将不得不在客户端上对消息进行排序。


推荐阅读