View Javadoc

1   package com.ozacc.mail.impl;
2   
3   import java.util.Random;
4   
5   import javax.mail.MessagingException;
6   import javax.mail.Session;
7   import javax.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.1 2004/11/25 08:01:07 otsuka Exp $
16   */
17  public class OMLMimeMessage extends MimeMessage {
18  
19  	private String messageId;
20  
21  	private static Random random = new Random();
22  
23  	/***
24  	 * コンストラクタ。
25  	 * 
26  	 * @param session 
27  	 * @param messageId Message-Idヘッダのドメイン部分に使用する文字列
28  	 */
29  	public OMLMimeMessage(Session session, String messageId) {
30  		super(session);
31  
32  		String[] parts = messageId.split("@");
33  		if (parts.length == 1) {
34  			this.messageId = "@" + messageId;
35  		} else if (parts.length == 2) {
36  			if (parts[0].length() > 0 && !parts[0].startsWith(".")) {
37  				this.messageId = "." + messageId;
38  			} else {
39  				this.messageId = messageId;
40  			}
41  		}
42  	}
43  
44  	/***
45  	 * Message-Idヘッダをここでセットします。
46  	 * <p>
47  	 * 参考ページ<br>
48  	 * <a href="http://java.sun.com/products/javamail/FAQ.html#msgid">http://java.sun.com/products/javamail/FAQ.html#msgid</a>
49  	 * 
50  	 * @see javax.mail.internet.MimeMessage#updateHeaders()
51  	 */
52  	protected void updateHeaders() throws MessagingException {
53  		super.updateHeaders();
54  		setHeader("Message-ID", generateRandomMessageId());
55  	}
56  
57  	/***
58  	 * タイムスタンプ + 16桁の乱数 + messageIdプロパティを連結した文字列を返します。
59  	 * 
60  	 * @return タイムスタンプ + 16桁の乱数 + messageIdプロパティを連結した文字列
61  	 */
62  	protected String generateRandomMessageId() {
63  		StringBuffer buf = new StringBuffer();
64  		buf.append(System.currentTimeMillis()).append(".");
65  		for (int i = 0; i < 16; i++) {
66  			long num = Math.abs(random.nextInt(10));
67  			buf.append(num);
68  		}
69  		buf.append(messageId);
70  		return buf.toString();
71  	}
72  
73  }