Open INBOX read-only and ask the server for the unread messages
Open INBOX read-only and ask the server for the unread messages
Answer
Store store = session.getStore("imaps"); store.connect(host, user, password); Folder inbox = store.getFolder("INBOX"); inbox.open(Folder.READ_ONLY); Message[] unread = inbox.search(new FlagTerm(new Flags(Flags.Flag.SEEN), false));
The false in FlagTerm means "flag not set", so this reads as messages without SEEN. Running it as a search pushes the filter to the server: one round trip instead of one per message.
Jakarta Mail API §Store, §Folder, §Message, §Flags