All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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