OSDN Git Service

CVS最新版の全ファイルを追加
[spring-ext/ozacc-mail.git] / src / java / com / ozacc / mail / impl / OMLMimeMessage.java
1 package com.ozacc.mail.impl;\r
2 \r
3 import java.util.Random;\r
4 \r
5 import javax.mail.MessagingException;\r
6 import javax.mail.Session;\r
7 import javax.mail.internet.MimeMessage;\r
8 \r
9 /**\r
10  * Message-Idヘッダがカスタマイズ可能なMimeMessageのサブクラス。\r
11  * \r
12  * @since 1.1\r
13  * \r
14  * @author Tomohiro Otsuka\r
15  * @version $Id: OMLMimeMessage.java,v 1.3.2.3 2006/01/20 10:57:50 otsuka Exp $\r
16  */\r
17 public class OMLMimeMessage extends MimeMessage {\r
18 \r
19         private static Random random = new Random();\r
20 \r
21         private String domainPartOfMessageId;\r
22 \r
23         private String messageId;\r
24 \r
25         /**\r
26          * コンストラクタ。\r
27          * \r
28          * @param session \r
29          * @param domainPartOfMessageId Message-Idヘッダのドメイン部分に使用する文字列\r
30          */\r
31         public OMLMimeMessage(Session session, String domainPartOfMessageId) {\r
32                 super(session);\r
33 \r
34                 String[] parts = domainPartOfMessageId.split("@");\r
35                 if (parts.length == 1) {\r
36                         this.domainPartOfMessageId = "@" + domainPartOfMessageId;\r
37                 } else if (parts.length == 2) {\r
38                         if (parts[0].length() > 0 && !parts[0].startsWith(".")) {\r
39                                 this.domainPartOfMessageId = "." + domainPartOfMessageId;\r
40                         } else {\r
41                                 this.domainPartOfMessageId = domainPartOfMessageId;\r
42                         }\r
43                 }\r
44                 messageId = generateRandomMessageId();\r
45         }\r
46 \r
47         /**\r
48          * Message-Idヘッダをここでセットします。\r
49          * <p>\r
50          * 参考ページ<br>\r
51          * <a href="http://java.sun.com/products/javamail/FAQ.html#msgid">http://java.sun.com/products/javamail/FAQ.html#msgid</a>\r
52          * \r
53          * @see javax.mail.internet.MimeMessage#updateHeaders()\r
54          */\r
55         protected void updateHeaders() throws MessagingException {\r
56                 super.updateHeaders();\r
57                 setHeader("Message-ID", messageId);\r
58         }\r
59 \r
60         /**\r
61          * タイムスタンプ + 16桁の乱数 + messageIdプロパティを連結した文字列を返します。\r
62          * \r
63          * @return タイムスタンプ + 16桁の乱数 + messageIdプロパティを連結した文字列\r
64          */\r
65         protected String generateRandomMessageId() {\r
66                 StringBuffer buf = new StringBuffer();\r
67                 buf.append("<");\r
68                 buf.append(System.currentTimeMillis()).append(".");\r
69                 for (int i = 0; i < 16; i++) {\r
70                         long num = Math.abs(random.nextInt(10));\r
71                         buf.append(num);\r
72                 }\r
73                 buf.append(domainPartOfMessageId);\r
74                 buf.append(">");\r
75                 return buf.toString();\r
76         }\r
77 \r
78         /**\r
79          * 生成されたMessage-Idを返します。\r
80          * \r
81          * @return 生成されたMessage-Id\r
82          */\r
83         public String getMessageId() {\r
84                 return messageId;\r
85         }\r
86 }