/** * 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; }
public void setFlagTermRead() { addSearchTerm( new FlagTerm( new Flags( Flags.Flag.SEEN ), true ) ); }
public void setFlagTermUnread() { addSearchTerm( new FlagTerm( new Flags( Flags.Flag.SEEN ), false ) ); }
public void setFlagTermNew() { addSearchTerm( new FlagTerm( new Flags( Flags.Flag.RECENT ), true ) ); }
public void setFlagTermDraft() { addSearchTerm( new FlagTerm( new Flags( Flags.Flag.DRAFT ), true ) ); }
public void setFlagTermFlagged() { addSearchTerm( new FlagTerm( new Flags( Flags.Flag.FLAGGED ), true ) ); }
public void setFlagTermNotDraft() { addSearchTerm( new FlagTerm( new Flags( Flags.Flag.DRAFT ), false ) ); }
public void setFlagTermOld() { addSearchTerm( new FlagTerm( new Flags( Flags.Flag.RECENT ), false ) ); }
public void setFlagTermNotFlagged() { addSearchTerm( new FlagTerm( new Flags( Flags.Flag.FLAGGED ), false ) ); }
private SearchTerm applyTermsWhenNoRecentFlag(Folder folder, SearchTerm searchTerm) { NotTerm notFlagged = null; if (folder.getPermanentFlags().contains(Flag.USER)) { if (logger.isDebugEnabled()) { logger.debug("This email server does not support RECENT flag, but it does support " + "USER flags which will be used to prevent duplicates during email fetch." + " This receiver instance uses flag: " + getUserFlag()); } Flags siFlags = new Flags(); siFlags.add(getUserFlag()); notFlagged = new NotTerm(new FlagTerm(siFlags, true)); } else { logger.debug("This email server does not support RECENT or USER flags. " + "System flag 'Flag.FLAGGED' will be used to prevent duplicates during email fetch."); notFlagged = new NotTerm(new FlagTerm(new Flags(Flag.FLAGGED), true)); } if (searchTerm == null) { return notFlagged; } else { return new AndTerm(searchTerm, notFlagged); } }
private SearchTerm fromAndNotSeenTerm(Flags supportedFlags, Folder folder) { try { FromTerm fromTerm = new FromTerm(new InternetAddress("bar@baz")); return new AndTerm(fromTerm, new FlagTerm(new Flags(Flags.Flag.SEEN), false)); } catch (AddressException e) { throw new RuntimeException(e); } }
recentFlagSupported = supportedFlags.contains(Flags.Flag.RECENT); if (recentFlagSupported) { searchTerm = new FlagTerm(new Flags(Flags.Flag.RECENT), true); NotTerm notAnswered = new NotTerm(new FlagTerm(new Flags(Flags.Flag.ANSWERED), true)); if (searchTerm == null) { searchTerm = notAnswered; NotTerm notDeleted = new NotTerm(new FlagTerm(new Flags(Flags.Flag.DELETED), true)); if (searchTerm == null) { searchTerm = notDeleted; NotTerm notSeen = new NotTerm(new FlagTerm(new Flags(Flags.Flag.SEEN), true)); if (searchTerm == null) { searchTerm = notSeen;
@Test public void testIdleWithServerCustomSearch() throws Exception { ImapMailReceiver receiver = new ImapMailReceiver("imap://user:pw@localhost:" + this.imapIdleServer.getPort() + "/INBOX"); receiver.setSearchTermStrategy((supportedFlags, folder) -> { try { FromTerm fromTerm = new FromTerm(new InternetAddress("bar@baz")); return new AndTerm(fromTerm, new FlagTerm(new Flags(Flag.SEEN), false)); } catch (AddressException e) { throw new RuntimeException(e); } }); testIdleWithServerGuts(receiver, false); }
/** * Get the deleted message count. */ public synchronized int getDeletedMessageCount() throws MessagingException { if (!opened) { checkExists(); // no way to do this on closed folders return -1; } // if opened, issue server-side search for messages that do // have the DELETED flag. Flags f = new Flags(); f.add(Flags.Flag.DELETED); try { synchronized(messageCacheLock) { int[] matches = getProtocol().search(new FlagTerm(f, true)); return matches.length; // NOTE: 'matches' is never null } } catch (ConnectionException cex) { throw new FolderClosedException(this, cex.getMessage()); } catch (ProtocolException pex) { // Shouldn't happen throw new MessagingException(pex.getMessage(), pex); } }
/** * Get the deleted message count. */ @Override public synchronized int getDeletedMessageCount() throws MessagingException { if (!opened) { checkExists(); // no way to do this on closed folders return -1; } // if opened, issue server-side search for messages that do // have the DELETED flag. Flags f = new Flags(); f.add(Flags.Flag.DELETED); try { synchronized(messageCacheLock) { int[] matches = getProtocol().search(new FlagTerm(f, true)); return matches.length; // NOTE: 'matches' is never null } } catch (ConnectionException cex) { throw new FolderClosedException(this, cex.getMessage()); } catch (ProtocolException pex) { // Shouldn't happen throw new MessagingException(pex.getMessage(), pex); } }
public SearchTermBuilder flag(Op op, Flags flags, boolean set) { SearchTerm st = new FlagTerm(flags, set); addTerm(op, st); return this; }
try { synchronized(messageCacheLock) { int[] matches = getProtocol().search(new FlagTerm(f, false)); return matches.length; // NOTE: 'matches' is never null
try { synchronized(messageCacheLock) { int[] matches = getProtocol().search(new FlagTerm(f, false)); return matches.length; // NOTE: 'matches' is never null
Properties props = System.getProperties(); props.setProperty("mail.store.protocol", "imaps"); Session session = Session.getDefaultInstance(props, null); Store store = session.getStore("imaps"); store.connect("<impap_address>","<mail ID> ", "<Password>"); inbox = store.getFolder("Inbox"); System.out.println("No of Unread Messages : " + inbox.getUnreadMessageCount()); inbox.open(Folder.READ_ONLY); /* Get the messages which is unread in the Inbox*/ Message messages[] = inbox.search(new FlagTerm(new Flags(Flag.SEEN), false));
public SearchTermBuilder unseen(Op op) { SearchTerm st = new FlagTerm(new Flags(Flags.Flag.SEEN), false); addTerm(op, st); return this; }