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