private void saveToCache(MimeMessage[] messages) {

    for (int i = 0; i < messages.length; i++) {

      Email email = new Email();
      try {

        email.setMessageID(messages[i].getMessageID());

        HashSet<String> from = new HashSet<String>();
        if (messages[i].getFrom() != null) {
          from = getEmailAdress(messages[i].getFrom());
        }
        email.setFrom(from);

        HashSet<Email> replies = new HashSet<Email>();

        if (messages[i].getHeader("In-Reply-To") != null) {
          String inReplyTo = extractReplyID(messages[i].getHeader("In-Reply-To")[0]);

          email.setInReplyTo(inReplyTo);
          replies.add(emailData.get(inReplyTo));
        }

        if (messages[i].getHeader("References") != null) {
          HashSet<Email> referenceList = getEmailAdress(messages[i].getHeader("References")[0]);
          email.setReferences(referenceList);
          replies.addAll(referenceList);
        }

        email.setReplies(replies);

        if (messages[i].getAllRecipients() != null) {
          email.setAllRecipients(getEmailAdress(messages[i].getAllRecipients()));
        }

        email.setSubject(messages[i].getSubject());

        // email.put("content", getText(messages[i]));

        email.setSentDate(messages[i].getSentDate());

        emailData.put(email.getMessageID(), email);

        // recursiveProcessReplies(email);
        emailCount++;

      } catch (MessagingException e) {
        emailLevelErrors++;
        // System.out.println("MessagingException on saveToDB: getContents: " + e.getMessage());
      }
    }
  }