如前所述,目前 WSO2 BPEL 没有内置邮件活动,但您可以通过从 BPEL 工作流内部调用外部 Web 服务(DSS、AS)来获得此功能。
几天前,我创建了一个具有这种功能的工作流程。基本上我创建了一个 Axis2 服务,它只是用于发送电子邮件的 Java 代码,我可以在其中提供主题、内容和接收者等参数,因此一旦您调用该服务,您就可以将电子邮件发送到任何电子邮件地址。我将提到的 Axis2 服务部署到 WSO2 DSS 中,并从 BPEL 工作流中调用它,后来我将其部署到 WSO2 BPS 中。
我用于发送电子邮件的 Java 代码如下:
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class MailSender {
    public static void main(String emailAddress, String content){
        String host = "smtp.gmail.com";
        String from = "example@gmail.com";
        String subject = "Subject example";
        Properties props = System.getProperties();
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.user", from);
        props.put("mail.smtp.password", "");
        props.put("mail.smtp.port", "587");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.auth", "true");
        try{
            Session session = Session.getDefaultInstance(props, null);
            InternetAddress to_address = new InternetAddress(emailAddress);
            MimeMessage message = new MimeMessage(session);         
            message.setFrom(new InternetAddress(from));
            message.addRecipient(Message.RecipientType.TO, to_address);
            message.setSubject(subject);        
            message.setContent(content, "text/html; charset=UTF-8");
            Transport transport = session.getTransport("smtp");
            transport.connect("smtp.gmail.com","example@gmail.com","Password");
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();
            }
            catch (MessagingException mex) {
            System.out.println("send failed, exception: " + mex);
            }
    }
}