package com.vci.server.workflow.server.event;
|
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Properties;
|
|
import javax.mail.Address;
|
import javax.mail.Authenticator;
|
import javax.mail.Message;
|
import javax.mail.PasswordAuthentication;
|
import javax.mail.Session;
|
import javax.mail.Transport;
|
import javax.mail.internet.InternetAddress;
|
import javax.mail.internet.MimeMessage;
|
|
import org.jbpm.api.listener.EventListener;
|
import org.jbpm.api.listener.EventListenerExecution;
|
|
import com.vci.corba.common.VCIError;
|
import com.vci.corba.framework.data.UserInfo;
|
import com.vci.server.base.utility.ServerServiceProvider;
|
import com.vci.server.workflow.common.resouce.WorkflowProperties;
|
|
/** */
|
/**
|
* 发送普通邮件,接受普通邮件 发送带有附件的邮件,接收带有附件的邮件 发送html形式的邮件,接受html形式的邮件 发送带有图片的邮件等做了一个总结。
|
*/
|
public class MessageListener implements EventListener {
|
/**
|
*
|
*/
|
private static final long serialVersionUID = 1L;
|
// 邮箱服务器
|
private String host = WorkflowProperties.getStringProperty("email.host");
|
// 这个是你的邮箱用户名
|
private String username = WorkflowProperties.getStringProperty("email.user");
|
// 你的邮箱密码
|
private String password = WorkflowProperties.getStringProperty("email.userPassword");
|
|
private String mail_head_name = "this is head of this mail";
|
|
private String mail_head_value = "this is head of this mail";
|
|
// private String mail_to = "test@vci.dyndns.org";
|
|
private String mail_from = WorkflowProperties.getStringProperty("email.fromAddress");
|
|
private String mail_subject = WorkflowProperties.getStringProperty("email.title");
|
|
private String mail_body = WorkflowProperties.getStringProperty("eamil.content");
|
|
private String personalName = "邮件";
|
|
private String validate = WorkflowProperties.getStringProperty("mail.smtp.auth");
|
|
public MessageListener() {
|
}
|
|
/** */
|
/**
|
* 此段代码用来发送普通电子邮件
|
*/
|
public void send(String mailTo) throws Exception {
|
try {
|
Properties props = new Properties(); // 获取系统环境
|
Authenticator auth = new Email_Autherticator(); // 进行邮件服务器用户认证
|
props.put("mail.smtp.host", host);
|
props.put("mail.smtp.auth", validate);
|
Session session = Session.getDefaultInstance(props, auth);
|
// 设置session,和邮件服务器进行通讯。
|
MimeMessage message = new MimeMessage(session);
|
// message.setContent("foobar, "application/x-foobar"); // 设置邮件格式
|
message.setSubject(mail_subject); // 设置邮件主题
|
message.setText(mail_body); // 设置邮件正文
|
message.setHeader(mail_head_name, mail_head_value); // 设置邮件标题
|
message.setSentDate(new Date()); // 设置邮件发送日期
|
Address address = new InternetAddress(mail_from, personalName);
|
message.setFrom(address); // 设置邮件发送者的地址
|
Address toAddress = new InternetAddress(mailTo); // 设置邮件接收方的地址
|
message.addRecipient(Message.RecipientType.TO, toAddress);
|
Transport.send(message); // 发送邮件
|
System.out.println("send ok!");
|
} catch (Exception ex) {
|
ex.printStackTrace();
|
// throw new Exception(ex.getMessage());
|
}
|
}
|
|
/** */
|
/**
|
* 用来进行服务器对用户的认证
|
*/
|
public class Email_Autherticator extends Authenticator {
|
public Email_Autherticator() {
|
super();
|
}
|
|
public Email_Autherticator(String user, String pwd) {
|
super();
|
username = user;
|
password = pwd;
|
}
|
|
public PasswordAuthentication getPasswordAuthentication() {
|
return new PasswordAuthentication(username, password);
|
}
|
}
|
|
public static void main(String[] args) {
|
MessageListener sendmail = new MessageListener();
|
// try {
|
// sendmail.send();
|
// UserObject userObject = sendmail.fetchUserInfoByName("root");
|
// System.out.println("userObject="+userObject.getEmail());
|
// } catch (Exception ex) {
|
// }
|
}
|
|
public void notify(EventListenerExecution e) throws Exception {
|
List<String> variable = (List<String>) e.getVariable("participants");
|
MessageListener sendmail = new MessageListener();
|
try {
|
for (String userName : variable) {
|
UserInfo userObject = fetchUserInfoByName(userName);
|
String mail_to = userObject.email;
|
sendmail.send(mail_to);
|
}
|
} catch (Exception ex) {
|
}
|
}
|
|
/***
|
* 根据用户名获取成员
|
*
|
* @return
|
* @throws VCIError
|
*/
|
public UserInfo fetchUserInfoByName(String userName) {
|
UserInfo userObject = null;
|
try {
|
userObject = ServerServiceProvider.getFrameService().fetchUserInfoByName(userName);
|
|
} catch (VCIError e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
return userObject;
|
}
|
|
}
|