javax.mail.internet
クラス InternetHeaders

java.lang.Object
  上位を拡張 javax.mail.internet.InternetHeaders

public final class InternetHeaders
extends Object

InternetHeaders は RFC822 形式のヘッダを管理するユーティリティクラスです。 RFC822 形式のメッセージストリームにおいてヘッダの終わりを示す空白行まで行を読み取ります。 入力ストリームは本文の最初に位置付けられます。 読み込まれた行はオブジェクトの内部に格納され、 String 又は Header オブジェクトとして取り出す事ができます。

このクラスは主としてサービスプロバイダ向けです。 MimeMessage 及び MimeBody はヘッダを保持する為にこのクラスを使用します。


RFC822 及び MIME ヘッダに関するメモ

RFC822 及び MIME ヘッダフィールドは US-ASCII 文字だけを含まなければなりません。 ヘッダが US-ASCII 以外の文字を含む場合、RFC 2047 の規則に従ってエンコードされなければなりません。 このパッケージで提供される MimeUtility クラスを用いて、これを行う事ができます。 setHeaderaddHeader、及び addHeaderLine メソッドの 呼び出し側は指定されたヘッダが MIME 要件に従っている事を保証しなければなりません。 又、これらのヘッダフィールドが転送における行の長さ制限 (SMTP の場合は 1000バイト) を超える 場合は送信の前に折りたたむ (ラップする) 必要があります。 受信ヘッダは折りたたまれている可能性があります。 アプリケーションはヘッダを適切に折りたたみ、展開する責任があります。

関連項目:
MimeUtility

コンストラクタの概要
InternetHeaders()
          空の InternetHeaders オブジェクトを作成します。
InternetHeaders(InputStream is)
          指定された RFC822 メッセージストリームを、ヘッダと本文を分ける空白行まで読み取り構文解析します。
 
メソッドの概要
 void addHeader(String name, String value)
          指定された名前と値を持つヘッダをヘッダリストに追加します。
 void addHeaderLine(String line)
          RFC822 ヘッダ行をヘッダストアに追加します。
 Enumeration getAllHeaderLines()
          全てのヘッダ行を String の列挙型として返します。
 Enumeration getAllHeaders()
          全てのヘッダを Header オブジェクトの Enumeration として返します。
 String[] getHeader(String name)
          指定されたヘッダの全ての値を返します。
 String getHeader(String name, String delimiter)
          このヘッダ名の全てのヘッダを取得し、区切り文字で区切られたヘッダが単一の String として返されます。
 Enumeration getMatchingHeaderLines(String[] names)
          一致する全てのヘッダ行を String の列挙型として返します。
 Enumeration getMatchingHeaders(String[] names)
          一致する全ての Header オブジェクトを返します。
 Enumeration getNonMatchingHeaderLines(String[] names)
          一致しない全てのヘッダ行を String の列挙型として返します。
 Enumeration getNonMatchingHeaders(String[] names)
          一致しない全ての Header オブジェクトを返します。
 void load(InputStream is)
          指定された RFC822 メッセージストリームを、ヘッダと本文を分ける空白行まで読み取り構文解析します。
 void removeHeader(String name)
          指定された名前に一致する全てのヘッダエントリを削除します。
 void setHeader(String name, String value)
          名前に一致する最初のヘッダ行の値を変更します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

InternetHeaders

public InternetHeaders()
空の InternetHeaders オブジェクトを作成します。


InternetHeaders

public InternetHeaders(InputStream is)
                throws MessagingException
指定された RFC822 メッセージストリームを、ヘッダと本文を分ける空白行まで読み取り構文解析します。 入力ストリームは本文の最初に位置付けられます。ヘッダ行は内部に格納されます。

効率化の為、BufferedInputStream を実際の入力ストリームの周りにラップし、パラメータとして渡して下さい。

パラメータ:
is - RFC822 入力ストリーム
例外:
MessagingException
メソッドの詳細

load

public void load(InputStream is)
          throws MessagingException
指定された RFC822 メッセージストリームを、ヘッダと本文を分ける空白行まで読み取り構文解析します。 ヘッダ行を InternetHeaders オブジェクトの内部に格納します。 ヘッダ行のオーダを保存します。

ヘッダ行はこの InternetHeaders オブジェクトに追加される為、 このオブジェクト内にある既存のヘッダは影響を受けません。

パラメータ:
is - RFC822 入力ストリーム
例外:
MessagingException

getHeader

public String[] getHeader(String name)
指定されたヘッダの全ての値を返します。値は String オブジェクトです。 Returns null if no headers with the specified name exist.

パラメータ:
name - ヘッダ名
戻り値:
array of header values, or null if none

getHeader

public String getHeader(String name,
                        String delimiter)
このヘッダ名の全てのヘッダを取得し、区切り文字で区切られたヘッダが単一の String として返されます。 区切り文字が null の場合は最初のヘッダだけが返されます。 Returns null if no headers with the specified name exist.

パラメータ:
name - ヘッダ名
delimiter - 区切り文字
戻り値:
この名前を持つ全てのヘッダに対する値フィールド

setHeader

public void setHeader(String name,
                      String value)
名前に一致する最初のヘッダ行の値を変更します。 一致する既存のヘッダがない場合は新しいヘッダを追加します。 最初のヘッダ以外の全ての一致するヘッダを削除します。

RFC822 ヘッダは US-ASCII 文字だけを含む事が可能である点に注意して下さい。

パラメータ:
name - ヘッダ名
value - ヘッダ値

addHeader

public void addHeader(String name,
                      String value)
指定された名前と値を持つヘッダをヘッダリストに追加します。

The current implementation knows about the preferred order of most well-known headers and will insert headers in that order. In addition, it knows that Received headers should be inserted in reverse order (newest before oldest), and that they should appear at the beginning of the headers, preceeded only by a possible Return-Path header.

RFC822 ヘッダは US-ASCII 文字だけを含む事が可能である点に注意して下さい。

パラメータ:
name - ヘッダ名
value - ヘッダ値

removeHeader

public void removeHeader(String name)
指定された名前に一致する全てのヘッダエントリを削除します。

パラメータ:
name - ヘッダ名

getAllHeaders

public Enumeration getAllHeaders()
全てのヘッダを Header オブジェクトの Enumeration として返します。

戻り値:
Header オブジェクト

getMatchingHeaders

public Enumeration getMatchingHeaders(String[] names)
一致する全ての Header オブジェクトを返します。

戻り値:
一致する Header オブジェクト

getNonMatchingHeaders

public Enumeration getNonMatchingHeaders(String[] names)
一致しない全ての Header オブジェクトを返します。

戻り値:
一致しない Header オブジェクト

addHeaderLine

public void addHeaderLine(String line)
RFC822 ヘッダ行をヘッダストアに追加します。 行の先頭がスペース又はタブの場合 (継続行) は、リスト中の最後のヘッダ行に追加します。 Otherwise, append the new header line to the list.

RFC822 ヘッダは US-ASCII 文字だけを含む事が可能である点に注意して下さい。

パラメータ:
line - 生の RFC822 ヘッダ行

getAllHeaderLines

public Enumeration getAllHeaderLines()
全てのヘッダ行を String の列挙型として返します。


getMatchingHeaderLines

public Enumeration getMatchingHeaderLines(String[] names)
一致する全てのヘッダ行を String の列挙型として返します。


getNonMatchingHeaderLines

public Enumeration getNonMatchingHeaderLines(String[] names)
一致しない全てのヘッダ行を String の列挙型として返します。