1 package de.tivsource.page.helper;
2
3 import java.io.UnsupportedEncodingException;
4 import java.text.MessageFormat;
5
6 import javax.mail.Message;
7 import javax.mail.MessagingException;
8 import javax.mail.Session;
9 import javax.mail.Transport;
10 import javax.mail.internet.AddressException;
11 import javax.mail.internet.InternetAddress;
12 import javax.mail.internet.MimeBodyPart;
13 import javax.mail.internet.MimeMessage;
14 import javax.mail.internet.MimeMultipart;
15 import javax.mail.internet.MimeUtility;
16
17
18 public class EmailSender {
19
20 public void send(String fromName, EmailTemplate template, Object[] arguments,
21 Session session) throws AddressException, MessagingException,
22 UnsupportedEncodingException {
23
24
25
26
27 MimeMessage message = new MimeMessage(session);
28
29
30
31
32 message.setFrom(new InternetAddress(template.getFrom(), fromName));
33 message.addRecipients(Message.RecipientType.TO,
34 template.getToAddresses());
35 message.addRecipients(Message.RecipientType.CC,
36 template.getCcAddresses());
37 message.addRecipients(Message.RecipientType.BCC,
38 template.getBccAddresses());
39
40
41 message.setReplyTo(new javax.mail.Address[]{
42 new InternetAddress(
43 (String)arguments[3]
44 )
45 });
46
47
48
49
50 message.setSubject(
51
52 MimeUtility.encodeText(
53
54 MessageFormat.format(template.getSubject(), arguments),"UTF-8", "Q"),
55 "UTF-8");
56
57
58
59
60
61 MimeBodyPart mantle = new MimeBodyPart();
62
63
64
65
66
67
68 MimeMultipart cover = new MimeMultipart("alternative");
69
70
71 MimeBodyPart text = new MimeBodyPart();
72
73
74 cover.addBodyPart(text);
75
76
77 MimeBodyPart html = new MimeBodyPart();
78
79
80 cover.addBodyPart(html);
81
82
83 mantle.setContent(cover);
84
85
86
87
88
89 html.setContent(MessageFormat.format(template.getHtml(), arguments),
90 "text/html; charset=UTF-8");
91 html.setHeader("Content-Transfer-Encoding", "8bit");
92
93
94
95
96
97 text.setText(MessageFormat.format(template.getBody(), arguments));
98 text.setHeader("Content-Transfer-Encoding", "8bit");
99
100
101
102 MimeMultipart content = new MimeMultipart("related");
103
104
105 message.setContent(content);
106
107
108 content.addBodyPart(mantle);
109
110
111 message.setHeader("Content-Transfer-Encoding", "8bit");
112
113
114 message.saveChanges();
115
116
117 Transport.send(message);
118 }
119
120
121
122 }