code: public boolean validate(final Email email)
  			throws MailException {
  		if (email.getText() == null && email.getTextHTML() == null) {
  			throw new MailException(MailException.MISSING_CONTENT);
  		} else if (email.getSubject() == null || email.getSubject().equals("")) {
  			throw new MailException(MailException.MISSING_SUBJECT);
  		} else if (email.getRecipients().size() == 0) {
  			throw new MailException(MailException.MISSING_RECIPIENT);
  		} else if (email.getFromRecipient() == null) {
  			throw new MailException(MailException.MISSING_SENDER);
  		} else {
  			if (!EmailValidationUtil.isValid(email.getFromRecipient().getAddress(), emailAddressValidationCriteria)) {
  				throw new MailException(String.format(MailException.INVALID_SENDER, email));
  			}
  			for (final Recipient recipient : email.getRecipients()) {
  				if (!EmailValidationUtil.isValid(recipient.getAddress(), emailAddressValidationCriteria)) {
  					throw new MailException(String.format(MailException.INVALID_RECIPIENT, email));
  				}
  			}
  		}
  		return true;
  	}
docs: Validates an {@link Email} instance. Validation fails if the subject is missing, content is missing, or no recipients are defined.
  
  @param email The email that needs to be configured correctly.
  @return Always <code>true</code> (throws a {@link MailException} exception if validation fails).
  @throws MailException Is being thrown in any of the above causes.
  @see EmailValidationUtil