类javax.mail.search.SearchTerm源码实例Demo

下面列出了怎么用javax.mail.search.SearchTerm的API类实例代码及写法,或者点击链接到github查看源代码。


/**
 * Check mail folder for an email using subject.
 *
 * @param emailSubject Email subject
 * @param folder       mail folder to check for an email
 * @param protocol     protocol used to connect to the server
 * @return whether mail received or not
 * @throws MessagingException if we're unable to connect to the store
 */
private static boolean isMailReceivedBySubject(String emailSubject, String folder, String protocol,
                                               GreenMailUser user) throws MessagingException {
    boolean emailReceived = false;
    Folder mailFolder;
    Store store = getConnection(user, protocol);
    try {
        mailFolder = store.getFolder(folder);
        mailFolder.open(Folder.READ_WRITE);
        SearchTerm searchTerm = new AndTerm(new SubjectTerm(emailSubject), new BodyTerm(emailSubject));
        Message[] messages = mailFolder.search(searchTerm);
        for (Message message : messages) {
            if (message.getSubject().contains(emailSubject)) {
                log.info("Found the Email with Subject : " + emailSubject);
                emailReceived = true;
                break;
            }
        }
    } finally {
        if (store != null) {
            store.close();
        }
    }
    return emailReceived;
}
 

@Override
protected long[] searchInternal(SearchTerm searchTerm)
{
    List<SimpleStoredMessage> messages = getMessages();
    long[] result = new long[messages.size()];
    int i = 0;
    
    for (SimpleStoredMessage message : messages)
    {
        if (searchTerm.match(message.getMimeMessage()))
        {
            result[i] = message.getUid();
            i++;
        }
    }
    return Arrays.copyOfRange(result, 0, i);
}
 
源代码3 项目: product-ei   文件: GreenMailServer.java

/**
 * Check mail folder for an email using subject.
 *
 * @param emailSubject Email subject
 * @param folder       mail folder to check for an email
 * @param protocol     protocol used to connect to the server
 * @return whether mail received or not
 * @throws MessagingException if we're unable to connect to the store
 */
private static boolean isMailReceivedBySubject(String emailSubject, String folder, String protocol,
        GreenMailUser user) throws MessagingException {
    boolean emailReceived = false;
    Folder mailFolder;
    Store store = getConnection(user, protocol);
    try {
        mailFolder = store.getFolder(folder);
        mailFolder.open(Folder.READ_WRITE);
        SearchTerm searchTerm = new AndTerm(new SubjectTerm(emailSubject), new BodyTerm(emailSubject));
        Message[] messages = mailFolder.search(searchTerm);
        for (Message message : messages) {
            if (message.getSubject().contains(emailSubject)) {
                log.info("Found the Email with Subject : " + emailSubject);
                emailReceived = true;
                break;
            }
        }
    } finally {
        if (store != null) {
            store.close();
        }
    }
    return emailReceived;
}
 
源代码4 项目: javamail-mock2   文件: MailboxFolder.java

public Message[] search(final SearchTerm term, final Message[] msgsToSearch) {
    final List<MockMessage> sms = new ArrayList<MockMessage>();
    final List<Message> msgsToSearchL = new ArrayList<Message>();

    if (msgsToSearch != null) {
        msgsToSearchL.addAll(Arrays.asList(msgsToSearch));
    }

    for (final Message msg : getMessages()) {
        if (term != null && term.match(msg)) {

            if (msgsToSearch == null || msgsToSearchL.contains(msg)) {
                sms.add((MockMessage) msg);
            }
        }
    }
    return sms.toArray(new Message[sms.size()]);
}
 
源代码5 项目: greenmail   文件: SearchTermBuilder.java

private static SearchTermBuilder createTextSearchTermBuilder() {
    return new SearchTermBuilder() {
        @Override
        public SearchTerm build() {
            String query = getParameters().get(0);
            SearchTerm[] terms = {
              new RecipientStringTerm(Message.RecipientType.TO, query),
              new RecipientStringTerm(Message.RecipientType.CC, query),
              new RecipientStringTerm(Message.RecipientType.BCC, query),
              new FromStringTerm(query),
              new SubjectTerm(query),
              new BodyTerm(query)
            };
            return new OrTerm(terms);
        }
    };
}
 
源代码6 项目: greenmail   文件: HierarchicalFolder.java

@Override
public long[] search(SearchTerm searchTerm) {
    List<StoredMessage> matchedMessages = new ArrayList<>();

    synchronized (mailMessages) {
        for (int i = 0; i < mailMessages.size(); i++) {
            StoredMessage mailMessage = mailMessages.get(i);
            // Update message sequence number for potential sequence set search
            // https://tools.ietf.org/html/rfc3501#page-10
            mailMessage.updateMessageNumber(i + 1);
            if (searchTerm.match(mailMessage.getMimeMessage())) {
                matchedMessages.add(mailMessage);
            }
        }
    }

    long[] matchedUids = new long[matchedMessages.size()];
    for (int i = 0; i < matchedUids.length; i++) {
        StoredMessage storedMessage = matchedMessages.get(i);
        long uid = storedMessage.getUid();
        matchedUids[i] = uid;
    }
    return matchedUids;
}
 

/**
 * Check a particular email has received to a given email folder by email subject.
 *
 * @param emailSubject - Email emailSubject to find email is in inbox or not
 * @return - found the email or not
 * @throws ESBMailTransportIntegrationTestException - Is thrown if an error occurred while reading the emails
 */
public static boolean isMailReceivedBySubject(String emailSubject, String folder)
        throws ESBMailTransportIntegrationTestException {
    boolean emailReceived = false;
    Folder mailFolder;
    Store store = getConnection();
    try {
        mailFolder = store.getFolder(folder);
        mailFolder.open(Folder.READ_WRITE);
        SearchTerm searchTerm = new AndTerm(new SubjectTerm(emailSubject), new BodyTerm(emailSubject));
        Message[] messages = mailFolder.search(searchTerm);
        for (Message message : messages) {
            if (message.getSubject().contains(emailSubject)) {
                log.info("Found the email emailSubject : " + emailSubject);
                emailReceived = true;
                break;
            }
        }
        return emailReceived;
    } catch (MessagingException ex) {
        log.error("Error when getting mail count ", ex);
        throw new ESBMailTransportIntegrationTestException("Error when getting mail count ", ex);
    } finally {
        if (store != null) {
            try {
                store.close();
            } catch (MessagingException e) {
                log.warn("Error when closing the store ", e);
            }
        }
    }
}
 
源代码8 项目: hop   文件: MailConnection.java

/**
 * Add search term.
 *
 * @param term search term to add
 */
private void addSearchTerm( SearchTerm term ) {
  if ( this.searchTerm != null ) {
    this.searchTerm = new AndTerm( this.searchTerm, term );
  } else {
    this.searchTerm = term;
  }
}
 

/**
 * Searches the mailbox for messages that match the given searching criteria
 * 
 * @param searchTerm - search term that contains search criteria.
 * @return UIDs of the messages
 */
public long[] search(final SearchTerm searchTerm)
{
    CommandCallback<long[]> command = new CommandCallback<long[]>()
    {
        public long[] command() throws Throwable
        {
            return searchInternal(searchTerm);
        }
    };
    return command.run();
}
 

private void extractSearchTermResultsToList(List<AlfrescoImapFolder> folders, SearchTerm searchTerm, ArrayList<Long> resList)
{
    for (AlfrescoImapFolder folder : folders)
    {
        for (long l : folder.search(searchTerm))
        {
            resList.add(l);
        }
    }
}
 
源代码11 项目: NoraUi   文件: MailSteps.java

/**
 * Valid activation email.
 *
 * @param mailHost
 *            example: imap.gmail.com
 * @param mailUser
 *            login of mail box
 * @param mailPassword
 *            password of mail box
 * @param senderMail
 *            sender of mail box
 * @param subjectMail
 *            subject of mail box
 * @param firstCssQuery
 *            the first matching element
 * @param conditions
 *            list of 'expected' values condition and 'actual' values ({@link com.github.noraui.gherkin.GherkinStepCondition}).
 * @throws TechnicalException
 *             is throws if you have a technical error (format, configuration, datas, ...) in NoraUi.
 *             Exception with message and with screenshot and with exception if functional error but no screenshot and no exception if technical error.
 * @throws FailureException
 *             if the scenario encounters a functional error
 */
@Experimental(name = "validActivationEmail")
@RetryOnFailure(attempts = 3, delay = 60)
@Conditioned
@Et("Je valide le mail d'activation {string}(\\?)")
@And("I valid activation email {string}(\\?)")
public void validActivationEmail(String mailHost, String mailUser, String mailPassword, String senderMail, String subjectMail, String firstCssQuery, List<GherkinStepCondition> conditions)
        throws FailureException, TechnicalException {
    try {
        final Properties props = System.getProperties();
        props.setProperty("mail.store.protocol", "imap");
        final Session session = Session.getDefaultInstance(props, null);
        final Store store = session.getStore("imaps");
        store.connect(mailHost, mailUser, mailPassword);
        final Folder inbox = store.getFolder("Inbox");
        inbox.open(Folder.READ_ONLY);
        final SearchTerm filterA = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
        final SearchTerm filterB = new FromTerm(new InternetAddress(senderMail));
        final SearchTerm filterC = new SubjectTerm(subjectMail);
        final SearchTerm[] filters = { filterA, filterB, filterC };
        final SearchTerm searchTerm = new AndTerm(filters);
        final Message[] messages = inbox.search(searchTerm);
        for (final Message message : messages) {
            validateActivationLink(subjectMail, firstCssQuery, message);
        }
    } catch (final Exception e) {
        new Result.Failure<>("", Messages.format(Messages.getMessage(Messages.FAIL_MESSAGE_MAIL_ACTIVATION), subjectMail), false, Context.getCallBack(Callbacks.RESTART_WEB_DRIVER));
    }
}
 
源代码12 项目: product-ei   文件: MailToTransportUtil.java

/**
 * Check a particular email has received to a given email folder by email subject.
 *
 * @param emailSubject - Email emailSubject to find email is in inbox or not
 * @return - found the email or not
 * @throws ESBMailTransportIntegrationTestException - Is thrown if an error occurred while reading the emails
 */
public static boolean isMailReceivedBySubject(String emailSubject, String folder)
        throws ESBMailTransportIntegrationTestException {
    boolean emailReceived = false;
    Folder mailFolder;
    Store store = getConnection();
    try {
        mailFolder = store.getFolder(folder);
        mailFolder.open(Folder.READ_WRITE);
        SearchTerm searchTerm = new AndTerm(new SubjectTerm(emailSubject), new BodyTerm(emailSubject));
        Message[] messages = mailFolder.search(searchTerm);
        for (Message message : messages) {
            if (message.getSubject().contains(emailSubject)) {
                log.info("Found the email emailSubject : " + emailSubject);
                emailReceived = true;
                break;
            }
        }
        return emailReceived;
    } catch (MessagingException ex) {
        log.error("Error when getting mail count ", ex);
        throw new ESBMailTransportIntegrationTestException("Error when getting mail count ", ex);
    } finally {
        if (store != null) {
            try {
                store.close();
            } catch (MessagingException e) {
                log.warn("Error when closing the store ", e);
            }
        }
    }
}
 
源代码13 项目: mail-importer   文件: JavaxMailFolder.java

@Override
public JavaxMailMessage[] search(SearchTerm term)
    throws RuntimeMessagingException {
  try {
    return decorateMessageArray(delegate.search(term));
  } catch (MessagingException e) {
    throw new RuntimeMessagingException(e);
  }
}
 
源代码14 项目: mail-importer   文件: JavaxMailFolder.java

@Override
public JavaxMailMessage[] search(SearchTerm term, Message[] msgs)
    throws RuntimeMessagingException {
  try {
    return decorateMessageArray(delegate.search(term, msgs));
  } catch (MessagingException e) {
    throw new RuntimeMessagingException(e);
  }
}
 
源代码15 项目: mail-importer   文件: JavaxMailMessage.java

@Override
public boolean match(SearchTerm term) throws RuntimeMessagingException {
  try {
    return delegate.match(term);
  } catch (MessagingException e) {
    throw new RuntimeMessagingException(e);
  }
}
 
源代码16 项目: greenmail   文件: SearchTermBuilder.java

private static SearchTermBuilder createSentDateTermBuilder(final int searchTerm) {
    return new SearchTermBuilder() {
        @Override
        public SearchTerm build() {
            return new SentDateTerm(searchTerm, parseDate(getParameters()));
        }
    };
}
 
源代码17 项目: greenmail   文件: SearchTermBuilder.java

private static SearchTermBuilder createReceivedDateTermBuilder(final int searchTerm) {
    return new SearchTermBuilder() {
        @Override
        public SearchTerm build() {
            return new ReceivedDateTerm(searchTerm, parseDate(getParameters()));
        }
    };
}
 
源代码18 项目: greenmail   文件: SearchTermBuilder.java

private static SearchTermBuilder createMessageSizeTermBuilder(final int searchTerm) {
    return new SearchTermBuilder() {
        @Override
        public SearchTerm build() {
            return new SizeTerm(searchTerm, SearchTermBuilder.parseInteger(getParameters()));
        }
    };
}
 
源代码19 项目: greenmail   文件: SearchTermBuilder.java

private static SearchTermBuilder createORTermBuilder() {
return new SearchTermBuilder() {
         @Override
         public SearchTerm build() {
            return new OrTerm(new SubjectTerm(getParameters().get(0)),new SubjectTerm(getParameters().get(1)));
         }
     };	}
 
源代码20 项目: greenmail   文件: SearchTermBuilder.java

private static SearchTermBuilder createHeaderTermBuilder() {
    return new SearchTermBuilder() {
        @Override
        public SearchTerm build() {
            return new HeaderTerm(getParameters().get(0), getParameters().get(1));
        }
    };
}
 
源代码21 项目: greenmail   文件: SearchTermBuilder.java

private static SearchTermBuilder createSearchTermBuilder(final SearchTerm pSearchTerm) {
    return new SearchTermBuilder() {
        @Override
        public SearchTerm build() {
            return pSearchTerm;
        }
    };
}
 
源代码22 项目: greenmail   文件: SearchTermBuilder.java

private static SearchTermBuilder createRecipientSearchTermBuilder(final Message.RecipientType type) {
    return new SearchTermBuilder() {
        @Override
        public SearchTerm build() {
            try {
                return new RecipientTerm(type, new InternetAddress(getParameters().get(0)));
            } catch (AddressException e) {
                throw new IllegalArgumentException("Address is not correct", e);
            }
        }
    };
}
 
源代码23 项目: greenmail   文件: SearchTermBuilder.java

private static SearchTermBuilder createBodySearchTermBuilder() {
    return new SearchTermBuilder() {
        @Override
        public SearchTerm build() {
            String query = getParameters().get(0);
            return new BodyTerm(query);
        }
    };
}
 
源代码24 项目: greenmail   文件: SearchTermBuilder.java

private static SearchTermBuilder createFromSearchTermBuilder() {
    return new SearchTermBuilder() {
        @Override
        public SearchTerm build() {
            try {
                return new FromTerm(new InternetAddress(getParameters().get(0)));
            } catch (AddressException e) {
                throw new IllegalArgumentException("Address is not correct", e);
            }
        }
    };
}
 
源代码25 项目: greenmail   文件: SearchTermBuilder.java

private static SearchTermBuilder createSubjectTermBuilder() {
    return new SearchTermBuilder() {
        @Override
        public SearchTerm build() {
            return new SubjectTerm(getParameters().get(0));
        }
    };
}
 
源代码26 项目: greenmail   文件: SearchTermBuilder.java

private static SearchTermBuilder createFlagSearchTermBuilder(final String pFlagName, final boolean pValue) {
    return new SearchTermBuilder() {
        @Override
        public SearchTerm build() {
            return createFlagSearchTerm(pFlagName, pValue);
        }
    };
}
 
源代码27 项目: greenmail   文件: SearchTermBuilder.java

private static SearchTermBuilder createKeywordSearchTermBuilder(final SearchKey pKey) {
    return new SearchTermBuilder() {
        @Override
        public SearchTerm build() {
            return createFlagSearchTerm(getParameter(0), pKey == SearchKey.KEYWORD);
        }
    };
}
 
源代码28 项目: greenmail   文件: SearchTermBuilder.java

private static SearchTerm createFlagSearchTerm(String pFlagName, boolean pValue) {
    Flags.Flag flag = toFlag(pFlagName);
    Flags flags = new javax.mail.Flags();
    if (null == flag) { // user flags
        flags.add(pFlagName);
    } else {
        flags.add(flag);
    }
    return new FlagTerm(flags, pValue);
}
 
源代码29 项目: greenmail   文件: SearchTermBuilder.java

private static SearchTermBuilder createUidTermBuilder() {
    return new SearchTermBuilder() {
        @Override
        public SearchTerm build() {
            final List<IdRange> uidSetList = IdRange.parseRangeSequence(getParameter(0));
            return new UidSearchTerm(uidSetList);
        }
    };
}
 
源代码30 项目: greenmail   文件: SearchTermBuilder.java

private static SearchTermBuilder createSequenceSetTermBuilder() {
    return new SearchTermBuilder() {
        @Override
        public SearchTerm build() {
            final List<IdRange> idRanges = IdRange.parseRangeSequence(getParameter(0));
            return new MessageNumberSearchTerm(idRanges);
        }
    };
}
 
 类所在包
 类方法
 同包方法