/** * Concatenates last search term with new one. * * @param searchTerm searchTerm {@link SearchTerm} concatenate. * @see #and(SearchTerm) * @see #or(SearchTerm) */ protected void concat(SearchTerm searchTerm) { if (nextIsNot) { searchTerm = new NotTerm(searchTerm); nextIsNot = false; } if (operatorAnd) { and(searchTerm); } else { or(searchTerm); } }
/** * Creates new Email filter. */ public static EmailFilter filter() { return new EmailFilter(); }
/** * Defines filter for message id. * * @param messageId The message ID. * @return this */ public EmailFilter messageId(final String messageId) { final SearchTerm msgIdTerm = new MessageIDTerm(messageId); concat(msgIdTerm); return this; }
@Test void testAndOrNotAlt() { final EmailFilter emailFilter = filter() .or( filter().and( filter().from(FROM), filter().to(TO) ), filter().not(filter().subject(SUBJECT)), filter().from(FROM_2) ); final SearchTerm expected = new OrTerm( new SearchTerm[]{ new AndTerm( new FromStringTerm(FROM), new RecipientStringTerm(Message.RecipientType.TO, TO) ), new NotTerm( new SubjectTerm(SUBJECT) ), new FromStringTerm(FROM_2) } ); assertEquals(expected, emailFilter.searchTerm); }
@Test void testReceivedDate() { final EmailFilter emailFilter = EmailFilter.filter() .receivedDate(EmailFilter.Operator.EQ, 1524575533757L) .sentDate(EmailFilter.Operator.GT, 1524575533757L); final SearchTerm expected = new AndTerm( new ReceivedDateTerm(3, new Date(1524575533757L)), new SentDateTerm(5, new Date(1524575533757L)) ); assertEquals(expected, emailFilter.searchTerm); }
/** * Defines filter for single flag. * * @param flag The flag to filter on. * @param value The {@link Flag} setting to check for. * @return this */ public EmailFilter flag(final Flag flag, final boolean value) { final Flags flags = new Flags(); flags.add(flag); return flags(flags, value); }
messages = folder.getMessages(); } else { messages = folder.search(filter.getSearchTerm());
@Test @Disabled("Requires Gmail") void testGoogle_receiveUnseen() { ImapServer imapServer = MailServer.create() .host("imap.gmail.com") .port(993) .ssl(true) .auth("gmail_username", "gmail_password") .buildImapMailServer(); ReceiveMailSession session = imapServer.createSession(); session.open(); ReceivedEmail[] mails = session.receive() .filter(filter().flag(Flags.Flag.SEEN, false)) .unmark(Flags.Flag.SEEN) .fromFolder("INBOX") .get(); System.out.println(mails.length); Arrays.stream(mails).map(CommonEmail::subject).forEach(System.out::println); session.close(); } }
@Test void testAndOrNot() { final EmailFilter emailFilter = filter() .from(FROM) .to(TO) .or() .not() .subject(SUBJECT) .from(FROM_2); final SearchTerm expected = new OrTerm( new OrTerm( new AndTerm( new FromStringTerm(FROM), new RecipientStringTerm(Message.RecipientType.TO, TO) ), new NotTerm( new SubjectTerm(SUBJECT) ) ), new FromStringTerm(FROM_2) ); assertEquals(expected, emailFilter.searchTerm); }
/** * Defines filter for single flag. * * @param flag The flag to filter on. * @param value The {@link Flag} setting to check for. * @return this */ public EmailFilter flag(final Flag flag, final boolean value) { final Flags flags = new Flags(); flags.add(flag); return flags(flags, value); }
messages = folder.getMessages(); } else { messages = folder.search(filter.getSearchTerm());
/** * Defines filter for BCC field. * * @param bccAddress BCC address. * @return this */ public EmailFilter bcc(final String bccAddress) { final SearchTerm toTerm = new RecipientStringTerm(RecipientType.BCC, bccAddress); concat(toTerm); return this; }
/** * Concatenates last search term with new one. * * @param searchTerm searchTerm {@link SearchTerm} concatenate. * @see #and(SearchTerm) * @see #or(SearchTerm) */ protected void concat(SearchTerm searchTerm) { if (nextIsNot) { searchTerm = new NotTerm(searchTerm); nextIsNot = false; } if (operatorAnd) { and(searchTerm); } else { or(searchTerm); } }
/** * Creates new Email filter. */ public static EmailFilter filter() { return new EmailFilter(); }
/** * Defines filter for many flags at once. * * @param flags The {@link Flags} to filter on. * @param value The {@link Flag} setting to check for. * @return this */ public EmailFilter flags(final Flags flags, final boolean value) { final SearchTerm flagTerm = new FlagTerm(flags, value); concat(flagTerm); return this; }