ludc
2025-01-16 986aa62ed00bee39363bab41b4eeb8259d446efd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
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;
    }
 
}