1 package com.ozacc.mail.impl;
3 import java.util.Random;
5 import jakarta.mail.MessagingException;
6 import jakarta.mail.Session;
7 import jakarta.mail.internet.MimeMessage;
10 * Message-Idヘッダがカスタマイズ可能なMimeMessageのサブクラス。
14 * @author Tomohiro Otsuka
15 * @version $Id: OMLMimeMessage.java,v 1.3.2.3 2006/01/20 10:57:50 otsuka Exp $
17 public class OMLMimeMessage extends MimeMessage {
19 private static Random random = new Random();
21 private String domainPartOfMessageId;
23 private String messageId;
29 * @param domainPartOfMessageId Message-Idヘッダのドメイン部分に使用する文字列
31 public OMLMimeMessage(Session session, String domainPartOfMessageId) {
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;
41 this.domainPartOfMessageId = domainPartOfMessageId;
44 messageId = generateRandomMessageId();
48 * Message-Idヘッダをここでセットします。
51 * <a href="http://java.sun.com/products/javamail/FAQ.html#msgid">http://java.sun.com/products/javamail/FAQ.html#msgid</a>
53 * @see jakarta.mail.internet.MimeMessage#updateHeaders()
55 protected void updateHeaders() throws MessagingException {
56 super.updateHeaders();
57 setHeader("Message-ID", messageId);
61 * タイムスタンプ + 16桁の乱数 + messageIdプロパティを連結した文字列を返します。
63 * @return タイムスタンプ + 16桁の乱数 + messageIdプロパティを連結した文字列
65 protected String generateRandomMessageId() {
66 StringBuilder buf = new StringBuilder();
68 buf.append(System.currentTimeMillis()).append(".");
69 for (int i = 0; i < 16; i++) {
70 long num = Math.abs(random.nextInt(10));
73 buf.append(domainPartOfMessageId);
75 return buf.toString();
79 * 生成されたMessage-Idを返します。
81 * @return 生成されたMessage-Id
83 public String getMessageId() {