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 }