View Javadoc

1   package com.ozacc.mail;
2   
3   import java.io.UnsupportedEncodingException;
4   import java.util.ArrayList;
5   import java.util.Collections;
6   import java.util.HashMap;
7   import java.util.Iterator;
8   import java.util.List;
9   import java.util.Map;
10  
11  import javax.mail.internet.AddressException;
12  import javax.mail.internet.InternetAddress;
13  
14  /***
15   * ¥á¡¼¥?¡£
16   * 
17   * @since 1.0
18   * @author Tomohiro Otsuka
19   * @version $Id: Mail.java,v 1.5 2004/09/13 07:10:35 otsuka Exp $
20   */
21  public class Mail {
22  
23  	/*** <code>ISO-2022-JP</code> */
24  	public static final String JIS_CHARSET = "ISO-2022-JP";
25  	
26  	public static final String DOCTYPE_PUBLIC = "-//OZACC//DTD MAIL//EN";
27  
28  	public static final String DOCTYPE_SYSTEM = "http://www.ozacc.com/library/dtd/ozacc-mail.dtd";
29  
30  	private String charset = JIS_CHARSET;
31  
32  	private String text;
33  
34  	private InternetAddress from;
35  
36  	private String subject;
37  
38  	private List to;
39  
40  	private List cc;
41  
42  	private List bcc;
43  
44  	private InternetAddress returnPath;
45  
46  	private InternetAddress replyTo;
47  
48  	private String importance;
49  
50  	private Map xHeaders;
51  
52  	/***
53  	 * ¥³¥ó¥¹¥È¥é¥¯¥¿¡£
54  	 */
55  	public Mail() {}
56  
57  	/***
58  	 * ¥³¥ó¥¹¥È¥é¥¯¥¿¡£
59  	 * °¸Àè¤äº¹½Ð¿Í¤Î̾Á°¤ò¥¨¥ó¥³¡¼¥É¤¹¤?»?¤Ë»ÈÍѤ¹¤?ʸ»ú¥³¡¼¥É¤ò»ØÄꤷ¤Þ¤¹¡£
60  	 * ¥Ç¥Õ¥©¥?¥È¤Ï<code>ISO-2022-JP</code>¤Ç¤¹¡£
61  	 * <p>
62  	 * Æ?Ëܸ?´Ä¶­¤ÇÍøÍѤ¹¤?¾?¹ç¤ÏÄ̾?Êѹ¹¤¹¤?ɬÍפϤ¢¤ê¤Þ¤»¤ó¡£
63  	 * 
64  	 * @param charset ¥¨¥ó¥³¡¼¥É¤Ë»ÈÍѤ¹¤?ʸ»ú¥³¡¼¥É
65  	 */
66  	public Mail(String charset) {
67  		this();
68  		this.charset = charset;
69  	}
70  
71  	/***
72  	 * ¥¨¥ó¥³¡¼¥É¤Ë»ÈÍѤ¹¤?ʸ»ú¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£
73  	 * 
74  	 * @return ¥¨¥ó¥³¡¼¥É¤Ë»ÈÍѤ¹¤?ʸ»ú¥³¡¼¥É
75  	 */
76  	public String getCharset() {
77  		return charset;
78  	}
79  
80  	/***
81  	 * ¥á¡¼¥?¤Î½ÅÍ×ÅÙ¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£
82  	 * °ú¿ô¤Ç»ØÄ?²Äǽ¤ÊÃͤϡÖhigh¡×¡¢¡Önormal¡×¡¢¡Ölow¡×¤Î¤¤¤º¤?¤«¤Ç¤¹¡£
83  	 * 
84  	 * @param importance ¥á¡¼¥?¤Î½ÅÍ×ÅÙ¡£¡Öhigh¡×¡¢¡Önormal¡×¡¢¡Ölow¡×¤Î¤¤¤º¤?¤«¡£
85  	 * @throws IllegalArgumentException »ØÄ?²Äǽ¤ÊÃͰʳ°¤¬»ØÄꤵ¤?¤¿¾?¹?
86  	 * 
87  	 * @see Mail.Importance
88  	 */
89  	public void setImportance(String importance) throws IllegalArgumentException {
90  		if ("high".equals(importance) || "normal".equals(importance) || "low".equals(importance)) {
91  			this.importance = importance;
92  		} else {
93  			throw new IllegalArgumentException("'" + importance + "'¤Ï¡¢¥á¡¼¥?½ÅÍ×Å٤ˤϻØÄê¤Ç¤­¤Ê¤¤ÃͤǤ¹¡£");
94  		}
95  	}
96  
97  	/***
98  	 * ¥á¡¼¥?¤Î½ÅÍ×ÅÙ¤òÊÖ¤·¤Þ¤¹¡£
99  	 * ÃͤϡÖhigh¡×¡¢¡Önormal¡×¡¢¡Ölow¡×¤Î¤¤¤º¤?¤«¤Ç¤¹¡£
100 	 * 
101 	 * @return ¥á¡¼¥?¤Î½ÅÍ×ÅÙ¡£¡Öhigh¡×¡¢¡Önormal¡×¡¢¡Ölow¡×¤Î¤¤¤º¤?¤«¡£
102 	 */
103 	public String getImportance() {
104 		return importance;
105 	}
106 
107 	/***
108 	 * ¥á¡¼¥?¤ÎÁ÷¿®À襢¥É¥?¥¹¤òÄɲä·¤Þ¤¹¡£
109 	 * 
110 	 * @param address Á÷¿®À襢¥É¥?¥¹
111 	 */
112 	public void addTo(InternetAddress address) {
113 		if (to == null) {
114 			to = new ArrayList();
115 		}
116 		to.add(address);
117 	}
118 
119 	/***
120 	 * ¥á¡¼¥?¤ÎÁ÷¿®À襢¥É¥?¥¹¤òÄɲä·¤Þ¤¹¡£
121 	 * 
122 	 * @param email Á÷¿®À襢¥É¥?¥¹
123 	 * @throws IllegalArgumentException ÉÔÀµ¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥¢¥É¥?¥¹¤¬»ØÄꤵ¤?¤¿¾?¹?
124 	 */
125 	public void addTo(String email) throws IllegalArgumentException {
126 		try {
127 			addTo(new InternetAddress(email));
128 		} catch (AddressException e) {
129 			throw new IllegalArgumentException(e.getMessage());
130 		}
131 	}
132 
133 	/***
134 	 * ¥á¡¼¥?¤ÎÁ÷¿®Àè̾¤È¥¢¥É¥?¥¹¤òÄɲä·¤Þ¤¹¡£
135 	 * ̾Á°¤ÏJIS_CHARSET¤Ç¥¨¥ó¥³¡¼¥É¤µ¤?¤Þ¤¹¡£
136 	 * 
137 	 * @param email Á÷¿®À襢¥É¥?¥¹
138 	 * @param name Á÷¿®Àè̾
139 	 * @throws IllegalArgumentException ÉÔÀµ¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥¢¥É¥?¥¹¤¬»ØÄꤵ¤?¤¿¾?¹?
140 	 */
141 	public void addTo(String email, String name) throws IllegalArgumentException {
142 		try {
143 			addTo(new InternetAddress(email, name, charset));
144 		} catch (UnsupportedEncodingException e) {
145 			throw new IllegalArgumentException(e.getMessage());
146 		}
147 	}
148 
149 	/***
150 	 * ¥á¡¼¥?¤ÎÁ÷¿®À襢¥É¥?¥¹¤ÎÇÛÎó¤òÊÖ¤·¤Þ¤¹¡£
151 	 * Á÷¿®À襢¥É¥?¥¹¤¬°?·?¤â¥»¥Ã¥È¤µ¤?¤Æ¤¤¤Ê¤¤¤È¤­¤Ï¶õ¤ÎÇÛÎó¤òÊÖ¤·¤Þ¤¹¡£
152 	 * 
153 	 * @return Á÷¿®À襢¥É¥?¥¹¤ÎÇÛÎ?
154 	 */
155 	public InternetAddress[] getTo() {
156 		if (to == null) {
157 			return new InternetAddress[0];
158 		}
159 		return (InternetAddress[])to.toArray(new InternetAddress[to.size()]);
160 	}
161 
162 	/***
163 	 * CC¥¢¥É¥?¥¹¤òÄɲä·¤Þ¤¹¡£
164 	 * 
165 	 * @param address CC¤Î¥¢¥É¥?¥¹
166 	 */
167 	public void addCc(InternetAddress address) {
168 		if (cc == null) {
169 			cc = new ArrayList();
170 		}
171 		cc.add(address);
172 	}
173 
174 	/***
175 	 * CC¥¢¥É¥?¥¹¤òÄɲä·¤Þ¤¹¡£
176 	 * 
177 	 * @param email CC¤Î¥¢¥É¥?¥¹
178 	 * @throws IllegalArgumentException ÉÔÀµ¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥¢¥É¥?¥¹¤¬»ØÄꤵ¤?¤¿¾?¹?
179 	 */
180 	public void addCc(String email) throws IllegalArgumentException {
181 		try {
182 			addCc(new InternetAddress(email));
183 		} catch (AddressException e) {
184 			throw new IllegalArgumentException(e.getMessage());
185 		}
186 	}
187 
188 	/***
189 	 * CC¤Î°¸Ì¾¤È¥¢¥É¥?¥¹¤òÄɲä·¤Þ¤¹¡£
190 	 * ̾Á°¤ÏJIS_CHARSET¤Ç¥¨¥ó¥³¡¼¥É¤µ¤?¤Þ¤¹¡£
191 	 * 
192 	 * @param email CC¤Î¥¢¥É¥?¥¹
193 	 * @param name CC¤Î°¸Ì¾
194 	 * @throws IllegalArgumentException ÉÔÀµ¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥¢¥É¥?¥¹¤¬»ØÄꤵ¤?¤¿¾?¹?
195 	 */
196 	public void addCc(String email, String name) throws IllegalArgumentException {
197 		try {
198 			addCc(new InternetAddress(email, name, charset));
199 		} catch (UnsupportedEncodingException e) {
200 			throw new IllegalArgumentException(e.getMessage());
201 		}
202 	}
203 
204 	/***
205 	 * ¥á¡¼¥?¤ÎCC¥¢¥É¥?¥¹ÇÛÎó¤òÊÖ¤·¤Þ¤¹¡£
206 	 * CC¥¢¥É¥?¥¹¤¬°?·?¤â¥»¥Ã¥È¤µ¤?¤Æ¤¤¤Ê¤¤¤È¤­¤Ï¶õ¤ÎÇÛÎó¤òÊÖ¤·¤Þ¤¹¡£
207 	 * 
208 	 * @return CC¥¢¥É¥?¥¹¤ÎÇÛÎ?
209 	 */
210 	public InternetAddress[] getCc() {
211 		if (cc == null) {
212 			return new InternetAddress[0];
213 		}
214 		return (InternetAddress[])cc.toArray(new InternetAddress[cc.size()]);
215 	}
216 
217 	/***
218 	 * BCC¥¢¥É¥?¥¹¤òÄɲä·¤Þ¤¹¡£
219 	 * 
220 	 * @param address BCC¤Î¥¢¥É¥?¥¹
221 	 */
222 	public void addBcc(InternetAddress address) {
223 		if (bcc == null) {
224 			bcc = new ArrayList();
225 		}
226 		bcc.add(address);
227 	}
228 
229 	/***
230 	 * BCC¥¢¥É¥?¥¹¤òÄɲä·¤Þ¤¹¡£
231 	 * 
232 	 * @param email BCC¤Î¥¢¥É¥?¥¹
233 	 * @throws IllegalArgumentException ÉÔÀµ¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥¢¥É¥?¥¹¤¬»ØÄꤵ¤?¤¿¾?¹?
234 	 */
235 	public void addBcc(String email) throws IllegalArgumentException {
236 		try {
237 			addBcc(new InternetAddress(email));
238 		} catch (AddressException e) {
239 			throw new IllegalArgumentException(e.getMessage());
240 		}
241 	}
242 
243 	/***
244 	 * ¥á¡¼¥?¤ÎBCC¥¢¥É¥?¥¹¤ÎÇÛÎó¤òÊÖ¤·¤Þ¤¹¡£
245 	 * BCC¥¢¥É¥?¥¹¤¬°?·?¤â¥»¥Ã¥È¤µ¤?¤Æ¤¤¤Ê¤¤¤È¤­¤Ï¶õ¤ÎÇÛÎó¤òÊÖ¤·¤Þ¤¹¡£
246 	 * 
247 	 * @return BCC¥¢¥É¥?¥¹¤ÎÇÛÎ?
248 	 */
249 	public InternetAddress[] getBcc() {
250 		if (bcc == null) {
251 			return new InternetAddress[0];
252 		}
253 		return (InternetAddress[])bcc.toArray(new InternetAddress[bcc.size()]);
254 	}
255 
256 	/***
257 	 * ¥á¡¼¥?¤Îº¹½Ð¿Í¥¢¥É¥?¥¹¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£
258 	 * 
259 	 * @param address º¹½Ð¿Í¥¢¥É¥?¥¹
260 	 */
261 	public void setFrom(InternetAddress address) {
262 		from = address;
263 	}
264 
265 	/***
266 	 * ¥á¡¼¥?¤Îº¹½Ð¿Í¥¢¥É¥?¥¹¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£
267 	 * 
268 	 * @param email º¹½Ð¿Í¥¢¥É¥?¥¹
269 	 * @throws IllegalArgumentException ÉÔÀµ¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥¢¥É¥?¥¹¤¬»ØÄꤵ¤?¤¿¾?¹?
270 	 */
271 	public void setFrom(String email) throws IllegalArgumentException {
272 		try {
273 			setFrom(new InternetAddress(email));
274 		} catch (AddressException e) {
275 			throw new IllegalArgumentException(e.getMessage());
276 		}
277 	}
278 
279 	/***
280 	 * ¥á¡¼¥?¤Îº¹½Ð¿Í̾¤È¥¢¥É¥?¥¹¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£
281 	 * ̾Á°¤ÏJIS_CHARSET¤Ç¥¨¥ó¥³¡¼¥É¤µ¤?¤Þ¤¹¡£
282 	 * 
283 	 * @param email º¹½Ð¿Í¥¢¥É¥?¥¹
284 	 * @param name º¹½Ð¿Í̾
285 	 * @throws IllegalArgumentException ÉÔÀµ¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥¢¥É¥?¥¹¤¬»ØÄꤵ¤?¤¿¾?¹?
286 	 */
287 	public void setFrom(String email, String name) throws IllegalArgumentException {
288 		try {
289 			setFrom(new InternetAddress(email, name, charset));
290 		} catch (UnsupportedEncodingException e) {
291 			throw new IllegalArgumentException(e.getMessage());
292 		}
293 	}
294 
295 	/***
296 	 * ¥á¡¼¥?¤Îº¹½Ð¿Í¥¢¥É¥?¥¹¤òÊÖ¤·¤Þ¤¹¡£¥»¥Ã¥È¤µ¤?¤Æ¤¤¤Ê¤¤¾?¹ç¤Ïnull¤òÊÖ¤·¤Þ¤¹¡£
297 	 * 
298 	 * @return ¥á¡¼¥?¤Îº¹½Ð¿Í¥¢¥É¥?¥¹
299 	 */
300 	public InternetAddress getFrom() {
301 		return from;
302 	}
303 
304 	/***
305 	 * Return-Path¥¢¥É¥?¥¹¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£
306 	 * 
307 	 * @param address Return-Path¥¢¥É¥?¥¹
308 	 */
309 	public void setReturnPath(InternetAddress address) {
310 		returnPath = address;
311 	}
312 
313 	/***
314 	 * Return-Path¥¢¥É¥?¥¹¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£
315 	 * 
316 	 * @param email Return-Path¥¢¥É¥?¥¹
317 	 * @throws IllegalArgumentException ÉÔÀµ¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥¢¥É¥?¥¹¤¬»ØÄꤵ¤?¤¿¾?¹?
318 	 */
319 	public void setReturnPath(String email) throws IllegalArgumentException {
320 		try {
321 			setReturnPath(new InternetAddress(email));
322 		} catch (AddressException e) {
323 			throw new IllegalArgumentException(e.getMessage());
324 		}
325 	}
326 
327 	/***
328 	 * Return-Path¥¢¥É¥?¥¹¤òÊÖ¤·¤Þ¤¹¡£
329 	 * 
330 	 * @return Return-Path¥¢¥É¥?¥¹
331 	 */
332 	public InternetAddress getReturnPath() {
333 		return returnPath;
334 	}
335 
336 	/***
337 	 * ÊÖ¿®À襢¥É¥?¥¹¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£
338 	 * 
339 	 * @param address ÊÖ¿®À襢¥É¥?¥¹
340 	 */
341 	public void setReplyTo(InternetAddress address) {
342 		replyTo = address;
343 	}
344 
345 	/***
346 	 * ÊÖ¿®À襢¥É¥?¥¹¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£
347 	 * 
348 	 * @param email ÊÖ¿®À襢¥É¥?¥¹
349 	 * @throws IllegalArgumentException ÉÔÀµ¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥¢¥É¥?¥¹¤¬»ØÄꤵ¤?¤¿¾?¹?
350 	 */
351 	public void setReplyTo(String email) throws IllegalArgumentException {
352 		try {
353 			setReplyTo(new InternetAddress(email));
354 		} catch (AddressException e) {
355 			throw new IllegalArgumentException(e.getMessage());
356 		}
357 	}
358 
359 	/***
360 	 * ¥á¡¼¥?¤ÎÊÖ¿®À襢¥É¥?¥¹¤òÊÖ¤·¤Þ¤¹¡£¥»¥Ã¥È¤µ¤?¤Æ¤¤¤Ê¤¤¾?¹ç¤Ïnull¤òÊÖ¤·¤Þ¤¹¡£
361 	 * 
362 	 * @return ÊÖ¿®À襢¥É¥?¥¹
363 	 */
364 	public InternetAddress getReplyTo() {
365 		return replyTo;
366 	}
367 
368 	/***
369 	 * ¥á¡¼¥?¤Î·?̾¤òÊÖ¤·¤Þ¤¹¡£¥»¥Ã¥È¤µ¤?¤Æ¤¤¤Ê¤¤¾?¹ç¤Ï¶õʸ»úÎó¤òÊÖ¤·¤Þ¤¹¡£
370 	 * 
371 	 * @return ¥á¡¼¥?¤Î·?̾
372 	 */
373 	public String getSubject() {
374 		if (subject == null) {
375 			return "";
376 		}
377 		return subject;
378 	}
379 
380 	/***
381 	 * ¥á¡¼¥?¤Î·?̾¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£
382 	 * 
383 	 * @param subject ¥á¡¼¥?¤Î·?̾
384 	 */
385 	public void setSubject(String subject) {
386 		this.subject = subject;
387 	}
388 
389 	/***
390 	 * ¥á¡¼¥?ËÜʸ¤òÊÖ¤·¤Þ¤¹¡£
391 	 * ËÜʸ¥»¥Ã¥È¤µ¤?¤Æ¤¤¤Ê¤¤¾?¹ç¤Ï¶õʸ»úÎó¤òÊÖ¤·¤Þ¤¹¡£
392 	 * 
393 	 * @return ¥á¡¼¥?ËÜʸ
394 	 */
395 	public String getText() {
396 		if (text == null) {
397 			return "";
398 		}
399 		return text;
400 	}
401 
402 	/***
403 	 * ¥á¡¼¥?ËÜʸ¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£
404 	 * 
405 	 * @param text ¥á¡¼¥?ËÜʸ
406 	 */
407 	public void setText(String text) {
408 		this.text = text;
409 	}
410 
411 	/***
412 	 * ¥á¡¼¥?¥Ø¥Ã¥À¤ËǤ°Õ¤Î¥Ø¥Ã¥À¤òÄɲä·¤Þ¤¹¡£
413 	 * Ǥ°Õ¥Ø¥Ã¥À¤Ï¡ÖX-key: value¡×¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¥á¡¼¥?¥Ø¥Ã¥À¤ËÁȤ߹?¤Þ¤?¤Þ¤¹¡£
414 	 *  
415 	 * @param key Ǥ°Õ¥Ø¥Ã¥À̾¡£Æ¬¤¬"X-"¤Ç»Ï¤Þ¤Ã¤Æ¤¤¤Ê¤±¤?¤Ð¡¢¼«Æ°Åª¤ËÉÕÍ¿¤µ¤?¤Þ¤¹¡£
416 	 * @param value Ǥ°Õ¥Ø¥Ã¥À¤ÎÃÍ
417 	 */
418 	public void addXHeader(String key, String value) {
419 		if (xHeaders == null) {
420 			xHeaders = new HashMap();
421 		}
422 		if (key.startsWith("X-")) {
423 			xHeaders.put(key, value);
424 		} else {
425 			xHeaders.put("X-" + key, value);
426 		}
427 	}
428 
429 	/***
430 	 * ¥á¡¼¥?¤ÎǤ°Õ¥Ø¥Ã¥À̾¤ÈÃͤÎMap¥¤¥ó¥¹¥¿¥ó¥¹¤òÊÖ¤·¤Þ¤¹¡£
431 	 * Ǥ°Õ¥Ø¥Ã¥À¤¬°?·?¤â¥»¥Ã¥È¤µ¤?¤Æ¤¤¤Ê¤¤¤È¤­¤Ïnull¤òÊÖ¤·¤Þ¤¹¡£
432 	 * <p>
433 	 * ¤³¤ÎMap¥¤¥ó¥¹¥¿¥ó¥¹¤Ø¤Î½¤Àµ¤Ï¤Ç¤­¤Þ¤»¤ó¡£(unmodifiableMap¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£)
434 	 * 
435 	 * @return ¥á¡¼¥?¤ÎǤ°Õ¥Ø¥Ã¥À̾¤ÈÃͤÎMap¥¤¥ó¥¹¥¿¥ó¥¹¡£¤Þ¤¿¤Ïnull¡£
436 	 */
437 	public Map getXHeaders() {
438 		if (xHeaders == null) {
439 			return null;
440 		}
441 		return Collections.unmodifiableMap(xHeaders);
442 	}
443 
444 	/***
445 	 * ¥á¡¼¥?ÆâÍÆ¤ò½ÐÎϤ·¤Þ¤¹¡£<br>
446 	 * ¥á¡¼¥?¤Î¥½¡¼¥¹¤Ë»÷¤¿¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç½ÐÎϤµ¤?¤Þ¤¹¡£
447 	 * 
448 	 * @see java.lang.Object#toString()
449 	 */
450 	public String toString() {
451 		StringBuffer buf = new StringBuffer(1000);
452 		buf.append("Mail\n");
453 		buf.append("Return-Path: ").append(returnPath).append("\n");
454 		buf.append("From: ").append(from != null ? from.toUnicodeString() : null).append("\n");
455 		buf.append("To: ").append(arrayToCommaDelimitedString(to)).append("\n");
456 		buf.append("Cc: ").append(arrayToCommaDelimitedString(cc)).append("\n");
457 		buf.append("Bcc: ").append(arrayToCommaDelimitedString(bcc)).append("\n");
458 		buf.append("Subject: ").append(subject).append("\n");
459 
460 		if (xHeaders != null) {
461 			for (Iterator itr = xHeaders.keySet().iterator(); itr.hasNext();) {
462 				String header = (String)itr.next();
463 				String value = (String)xHeaders.get(header);
464 				buf.append(header).append(": ").append(value).append("\n");
465 			}
466 		}
467 
468 		buf.append("\n");
469 		buf.append(text);
470 
471 		return buf.toString();
472 	}
473 
474 	/***
475 	 * @param list
476 	 * @return 
477 	 */
478 	private String arrayToCommaDelimitedString(List list) {
479 		if (list == null) {
480 			return "null";
481 		} else {
482 			StringBuffer sb = new StringBuffer();
483 			for (int i = 0, num = list.size(); i < num; i++) {
484 				if (i > 0) {
485 					sb.append(", ");
486 				}
487 				sb.append(((InternetAddress)list.get(i)).toUnicodeString());
488 			}
489 			return sb.toString();
490 		}
491 	}
492 
493 	/***
494 	 * ¥á¡¼¥?¤Î½ÅÍ×ÅÙ¡£Ä?¿ô¤Î¤ß¤òÄ?µÁ¡£
495 	 * 
496 	 * @author Tomohiro Otsuka
497 	 * @version $Id: Mail.java,v 1.5 2004/09/13 07:10:35 otsuka Exp $
498 	 */
499 	public static class Importance {
500 
501 		/*** ½ÅÍ×ÅÙ¡Ö¹â¡× */
502 		public static final String HIGH = "high";
503 
504 		/*** ½ÅÍ×ÅÙ¡ÖÃæ¡× */
505 		public static final String NORMAL = "normal";
506 
507 		/*** ½ÅÍ×ÅÙ¡ÖÄã¡× */
508 		public static final String LOW = "low";
509 
510 	}
511 }