OSDN Git Service

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