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