/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.mail;
import jodd.mail.Email;
import jodd.mail.EmailAddress;
import jodd.mail.MailAddress;
import de.rcenvironment.core.utils.common.StringUtils;
/**
* This class is a utility to make sure that only valid mails can be created.
*
* @author Tobias Rodehutskors
*/
public final class Mail {
private Email email;
/**
* Private constructor to avoid creation of unvalidated instances.
*/
private Mail() {
}
/**
* Creates a new Mail that is valid. If the mail cannot be created, since the given parameters are not valid, a
* {@link InvalidMailException} will be thrown.
*
* @param recipients An array of recipient email addresses. All these recipients will be added to the TO field of the created mail. At
* least one recipient has to be configured.
* @param subject The required subject of this mail.
* @param text The text of the mail. You need to specify at least one of text and htmlText.
* @param htmlText The HTML text of the mail. You need to specify at least one of text and htmlText.
* @throws InvalidMailException On validation errors during the construction of this mail.
* @return The validated mail.
*/
public static Mail createMail(String[] recipients, String subject, String text, String htmlText)
throws InvalidMailException {
if (recipients == null || recipients.length < 1) {
throw new InvalidMailException("You need to configure at least one valid recipient.");
}
Email tmpEmail = new Email();
// verify that all recipients are valid mail addresses
for (String recipient : recipients) {
EmailAddress recipientEmailAddress = new EmailAddress(recipient);
if (!recipientEmailAddress.isValid()) {
throw new InvalidMailException(StringUtils.format("The email address %s is not valid.", recipient));
}
tmpEmail.addTo(new MailAddress(recipientEmailAddress));
}
if (subject == null) {
throw new InvalidMailException("You need to specify a subject.");
}
tmpEmail.subject(subject);
if (text == null && htmlText == null) {
throw new InvalidMailException("You need to specify either a text or a HTML text.");
}
if (text != null) {
tmpEmail.addText(text);
}
if (htmlText != null) {
tmpEmail.addHtml(htmlText);
}
Mail mail = new Mail();
mail.email = tmpEmail;
return mail;
}
public Email getMail() {
return this.email;
}
}