
org.ow2.bonita.mail.EmailSender Maven / Gradle / Ivy
package org.ow2.bonita.mail;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.ow2.bonita.definition.TxHook;
import org.ow2.bonita.facade.APIAccessor;
import org.ow2.bonita.facade.runtime.ActivityBody;
import org.ow2.bonita.facade.runtime.ActivityInstance;
public abstract class EmailSender implements TxHook {
protected abstract String getFrom(ActivityInstance activityInstance) throws Exception;
protected abstract List getTo(ActivityInstance activityInstance) throws Exception;
protected abstract List getCc(ActivityInstance activityInstance) throws Exception;
protected abstract List getBcc(ActivityInstance activityInstance) throws Exception;
protected abstract String getBody(ActivityInstance activityInstance) throws Exception;
protected abstract String getSubject(ActivityInstance activityInstance) throws Exception;
protected abstract String getSmtpHost(ActivityInstance activityInstance) throws Exception;
protected abstract String getEncoding(ActivityInstance activityInstance) throws Exception;
public void execute(APIAccessor accessor, ActivityInstance activityInstance) throws Exception {
Properties emailProperties = new Properties();
emailProperties.put("mail.smtp.host", getSmtpHost(activityInstance));
Session session = Session.getInstance(emailProperties, null);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(getFrom(activityInstance)));
message.setRecipients(javax.mail.Message.RecipientType.TO, getAdresses(getTo(activityInstance)));
message.setRecipients(javax.mail.Message.RecipientType.CC, getAdresses(getCc(activityInstance)));
message.setRecipients(javax.mail.Message.RecipientType.BCC, getAdresses(getBcc(activityInstance)));
message.setSubject(getSubject(activityInstance));
message.setSentDate(new java.util.Date());
message.setContent(getBody(activityInstance), "text/plain;charset=" + getEncoding(activityInstance));
Transport.send(message);
}
private Address[] getAdresses(List emails) throws AddressException {
if (emails == null || emails.size() <= 0) {
return null;
}
List addresses = new ArrayList();
for (String email : emails) {
Address address = new InternetAddress(email);
addresses.add(address);
}
return addresses.toArray(new Address[addresses.size()]);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy