1
zj
2024-10-01 bd21cffed808eff59e330de7142c59af6b48e169
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
package com.nq.utils.email;
 
 
import com.nq.pojo.User;
import com.nq.pojo.UserRecharge;
import com.nq.utils.PropertiesUtil;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Calendar;
import java.util.List;
 
 
public class SendHTMLMail {
    private static final Logger log = LoggerFactory.getLogger(SendHTMLMail.class);
 
    public static void send(User user, UserRecharge userRecharge, String emailToken, String host, String emailTo) {
        SAXReader reader = new SAXReader();
        Document document = null;
 
        String path = SendHTMLMail.class.getResource("/").getPath().replaceAll("%20", " ");
 
        String html_path = path + "email/auth.html";
 
        File file = new File(html_path);
 
        try {
            document = reader.read(file);
            document.setXMLEncoding("utf-8");
            Element root = document.getRootElement();
 
            Element time = getNodes(root, "id", "time");
            Calendar calendar = Calendar.getInstance();
            time.setText(calendar
                    .get(1) + "-" + (calendar.get(2) + 1) + "-" + calendar
                    .get(5) + " " + calendar.get(10) + ":" + calendar
                    .get(12) + ":" + calendar.get(13));
 
            Element noticeName = getNodes(root, "id", "noticeName");
            noticeName.setText(user.getRealName());
 
            Element userid = getNodes(root, "id", "userid");
            userid.setText(user.getId() + "");
            Element realname = getNodes(root, "id", "realname");
            realname.setText((user.getAccountType().intValue() == 0) ? ("正式用戶 - " + user
                    .getRealName()) : ("模擬用戶 - " + user
                    .getRealName()));
            Element amt = getNodes(root, "id", "amt");
            amt.setText(userRecharge.getPayAmt().toString());
            Element ordersn = getNodes(root, "id", "ordersn");
            ordersn.setText(userRecharge.getOrderSn());
 
            String authurl = PropertiesUtil.getProperty("site.email.auth.url");
 
            String emailUrl = host + authurl + "?token=" + emailToken + "&orderSn=" + userRecharge.getOrderSn() + "&state=";
 
            String successUrl = emailUrl + '\001';
            Element dosuccessurl = getNodes(root, "id", "dosuccessurl");
            dosuccessurl.setText(successUrl);
            Element dosuccess = getNodes(root, "id", "dosuccess");
            dosuccess.setAttributeValue("href", successUrl);
 
            String failUrl = emailUrl + '\002';
            Element dofailurl = getNodes(root, "id", "dofailurl");
            dofailurl.setText(failUrl);
            Element dofail = getNodes(root, "id", "dofail");
            dofail.setAttributeValue("href", failUrl);
 
            String cancelUrl = emailUrl + '\003';
            Element docancelurl = getNodes(root, "id", "docancelurl");
            docancelurl.setText(cancelUrl);
            Element docancel = getNodes(root, "id", "docancel");
            docancel.setAttributeValue("href", cancelUrl);
 
            FileWriter fwriter = new FileWriter(path + "email/temp.html");
            XMLWriter writer = new XMLWriter(fwriter);
            writer.write(document);
            writer.flush();
 
            FileReader in = new FileReader(path + "email/temp.html");
            char[] buff = new char[10240];
            in.read(buff);
            String str = new String(buff);
 
            str = str.replaceAll("\000", "");
            (new MailSender.Builder(str.toString(), emailTo)).send();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    public static Element getNodes(Element node, String attrName, String attrValue) {
        List<Attribute> listAttr = node.attributes();
        for (Attribute attr : listAttr) {
            String name = attr.getName();
            String value = attr.getValue();
 
            if (attrName.equals(name) && attrValue.equals(value)) {
                return node;
            }
        }
 
        List<Element> listElement = node.elements();
        for (Element e : listElement) {
            Element temp = getNodes(e, attrName, attrValue);
 
            if (temp != null) {
                return temp;
            }
        }
        return null;
    }
}