i would like to search my inbox through java api filtering particular address... For Eg., i would like to search all the mails from particular emailid say [email protected] and do a sysout.
Store store = emailSession.getStore("pop3s");
store.connect(host, user, password);
Folder emailFolder = store.getFolder("INBOX");
emailFolder.open(Folder.READ_WRITE);
Flags seen = new Flags(Flags.Flag.SEEN);
FlagTerm unseenFlagTerm = new FlagTerm(seen, true);
Message unreadMessages[] = emailFolder.search(unseenFlagTerm);
for (int i = unreadMessages.length-1; i > 0 ; i--) {
System.out.println("Subject : " + unreadMessages[i].getSubject());
System.out.println("From : " + unreadMessages[i].getFrom()[0]);
}
Assuming that the code you posted works, using a simple loop, it would be something like:
FlagTerm unseenFlagTerm = new FlagTerm(seen, true);
Message[] unreadMessages = emailFolder.search(unseenFlagTerm);
Address searchFrom = new InternetAddress("[email protected]");
for (int i = unreadMessages.length-1; i > 0 ; i--) {
Message message = unreadMessages[i];
if(Arrays.asList(message.getFrom()).contains(searchFrom)) {
System.out.println("Subject : " + message.getSubject());
}
}
Alternatively, you can use a FromTerm
:
FlagTerm unseenFlagTerm = new FlagTerm(seen, true);
FromTerm fromTerm = new FromTerm(new InternetAddress("[email protected]"));
SearchTerm searchTerm = new AndTerm(unseenFlagTerm, fromTerm);
Message[] messages = emailFolder.search(searchTerm);
for (int i = messages.length-1; i > 0 ; i--) {
System.out.println("Subject : " + message.getSubject());
}