如前所述,目前 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);
}
}
}