1 /***
2 * @(#)MailMessageImpl.java
3 *
4 * JFoxSOAF, Service-Oriented Application Framework
5 *
6 * Copyright(c) JFoxSOAF Team
7 *
8 * Licensed under the GNU LGPL, Version 2.1 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
11 *
12 * http://www.gnu.org/copyleft/lesser.html
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 *
20 * For more information, please visit:
21 * http://www.jfox.cn/confluence/display/JFoxSOAF/Home
22 * http://www.huihoo.org/jfox/jfoxsoaf
23 */
24
25 package org.huihoo.jfox.soaf.services.mail;
26
27 import java.io.UnsupportedEncodingException;
28 import java.util.Date;
29 import java.util.List;
30
31 import javax.mail.Message;
32 import javax.mail.MessagingException;
33 import javax.mail.Multipart;
34 import javax.mail.Session;
35 import javax.mail.internet.InternetAddress;
36 import javax.mail.internet.MimeBodyPart;
37 import javax.mail.internet.MimeMessage;
38 import javax.mail.internet.MimeMultipart;
39
40 import org.huihoo.jfox.soaf.exception.MailException;
41
42 /***
43 * <p>
44 * Implementation of the MailMessage interface.
45 * </p>
46 *
47 * @author <a href="mailto:founder_chen@yahoo.com.cn">Peter Cheng </a>
48 * @version $Revision: 1.1 $ $Date: 2005/05/22 06:50:11 $
49 * @version Revision: 1.0
50 */
51
52 public class MailMessageImpl implements MailMessage {
53
54 private MimeMessage mimeMessage;
55
56 private static final String CONTENT_TYPE_HTML = "text/html";
57
58 private static final String CONTENT_TYPE_CHARSET_SUFFIX = ";charset=";
59
60 /***
61 * @param session
62 */
63 public MailMessageImpl(Session session) {
64 this.mimeMessage = new MimeMessage(session);
65 }
66
67 /***
68 * @see org.huihoo.jfox.soaf.services.mail.MailMessage#setFrom(java.lang.String,
69 * java.lang.String)
70 */
71 public void setFrom(String from, String personal) throws MailException {
72 try {
73 this.mimeMessage.setFrom(new InternetAddress(from, personal));
74 } catch (UnsupportedEncodingException e) {
75 throw new MailException(e);
76 } catch (MessagingException e) {
77 throw new MailException(e);
78 }
79 }
80
81 /***
82 * @see org.huihoo.jfox.soaf.services.mail.MailMessage#setFrom(java.lang.String)
83 */
84 public void setFrom(String from) throws MailException {
85 try {
86 this.mimeMessage.setFrom(new InternetAddress(from));
87 } catch (MessagingException e) {
88 throw new MailException(e);
89 }
90 }
91
92 /***
93 * @see org.huihoo.jfox.soaf.services.mail.MailMessage#setReplyTo(java.lang.String)
94 */
95 public void setReplyTo(String replyTo) throws MailException {
96 try {
97 this.mimeMessage
98 .setReplyTo(new InternetAddress[] { new InternetAddress(
99 replyTo) });
100 } catch (MessagingException e) {
101 throw new MailException(e);
102 }
103 }
104
105 /***
106 * @see org.huihoo.jfox.soaf.services.mail.MailMessage#setTo(java.lang.String)
107 */
108 public void setTo(String to) throws MailException {
109 try {
110 this.mimeMessage.setRecipient(Message.RecipientType.TO,
111 new InternetAddress(to));
112 } catch (MessagingException e) {
113 throw new MailException(e);
114 }
115 }
116
117 /***
118 * @see org.huihoo.jfox.soaf.services.mail.MailMessage#setTo(java.util.List)
119 */
120 public void setTo(List toList) throws MailException {
121 try {
122 this.mimeMessage.setRecipients(Message.RecipientType.TO,
123 toInternetAddressArray(toList));
124 } catch (MessagingException e) {
125 throw new MailException(e);
126 }
127
128 }
129
130 /***
131 * @see org.huihoo.jfox.soaf.services.mail.MailMessage#setCc(java.lang.String)
132 */
133 public void setCc(String cc) throws MailException {
134 try {
135 this.mimeMessage.setRecipient(Message.RecipientType.CC,
136 new InternetAddress(cc));
137 } catch (MessagingException e) {
138 throw new MailException(e);
139 }
140 }
141
142 /***
143 * @see org.huihoo.jfox.soaf.services.mail.MailMessage#setCc(java.util.List)
144 */
145 public void setCc(List ccList) throws MailException {
146 try {
147 this.mimeMessage.setRecipients(Message.RecipientType.CC,
148 toInternetAddressArray(ccList));
149 } catch (MessagingException e) {
150 throw new MailException(e);
151 }
152 }
153
154 /***
155 * @see org.huihoo.jfox.soaf.services.mail.MailMessage#setBcc(java.lang.String)
156 */
157 public void setBcc(String bcc) throws MailException {
158 try {
159 this.mimeMessage.setRecipient(Message.RecipientType.BCC,
160 new InternetAddress(bcc));
161 } catch (MessagingException e) {
162 throw new MailException(e);
163 }
164 }
165
166 /***
167 * @see org.huihoo.jfox.soaf.services.mail.MailMessage#setBcc(java.util.List)
168 */
169 public void setBcc(List bccList) throws MailException {
170 try {
171 this.mimeMessage.setRecipients(Message.RecipientType.BCC,
172 toInternetAddressArray(bccList));
173 } catch (MessagingException e) {
174 throw new MailException(e);
175 }
176 }
177
178 /***
179 * @see org.huihoo.jfox.soaf.services.mail.MailMessage#setSentDate(java.util.Date)
180 */
181 public void setSentDate(Date sentDate) throws MailException {
182 try {
183 this.mimeMessage.setSentDate(sentDate);
184 } catch (MessagingException e) {
185 throw new MailException(e);
186 }
187
188 }
189
190 /***
191 * @see org.huihoo.jfox.soaf.services.mail.MailMessage#setSubject(java.lang.String)
192 */
193 public void setSubject(String subject) throws MailException {
194 try {
195 this.mimeMessage.setSubject(subject);
196 } catch (MessagingException e) {
197 throw new MailException(e);
198 }
199 }
200
201 /***
202 * @see org.huihoo.jfox.soaf.services.mail.MailMessage#setSubject(java.lang.String)
203 */
204 public void setSubject(String subject, String charset) throws MailException {
205 try {
206 this.mimeMessage.setSubject(subject, charset);
207 } catch (MessagingException e) {
208 throw new MailException(e);
209 }
210 }
211
212 /***
213 * @see org.huihoo.jfox.soaf.services.mail.MailMessage#setText(java.lang.String)
214 */
215 public void setText(String text, boolean html) throws MailException {
216 try {
217 Multipart multipt = new MimeMultipart();
218 MimeBodyPart msgbody = new MimeBodyPart();
219 msgbody.setText(text);
220 multipt.addBodyPart(msgbody);
221 if (html) {
222 this.mimeMessage.setContent(multipt, CONTENT_TYPE_HTML);
223 } else {
224 this.mimeMessage.setContent(multipt);
225 }
226 } catch (MessagingException e) {
227 throw new MailException(e);
228 }
229 }
230
231 /***
232 * @see org.huihoo.jfox.soaf.services.mail.MailMessage#setText(java.lang.String)
233 */
234 public void setText(String text, String charset, boolean html)
235 throws MailException {
236 try {
237 Multipart multipt = new MimeMultipart();
238 MimeBodyPart msgbody = new MimeBodyPart();
239 msgbody.setText(text, charset);
240 multipt.addBodyPart(msgbody);
241 if (html) {
242 this.mimeMessage.setContent(multipt, CONTENT_TYPE_HTML
243 + CONTENT_TYPE_CHARSET_SUFFIX + charset);
244 } else {
245 this.mimeMessage.setContent(multipt);
246 }
247 } catch (MessagingException e) {
248 throw new MailException(e);
249 }
250 }
251
252 protected InternetAddress[] toInternetAddressArray(List aList) {
253 InternetAddress[] ia = (InternetAddress[]) aList
254 .toArray(new InternetAddress[0]);
255 return ia;
256 }
257
258 /***
259 * @see org.huihoo.jfox.soaf.services.mail.MailMessage#setContentLanguage(java.lang.String[])
260 */
261 public void setContentLanguage(String[] langs) throws MailException {
262 try {
263 this.mimeMessage.setContentLanguage(langs);
264 } catch (MessagingException e) {
265 throw new MailException(e);
266 }
267 }
268
269 /***
270 * see org.huihoo.jfox.soaf.services.mail.MailMessage#getMimeMessage()
271 */
272 public MimeMessage getMimeMessage() {
273 return this.mimeMessage;
274 }
275
276 }