クラス InternetHeaders
- java.lang.ObjectSE
-
- jakarta.mail.internet.InternetHeaders
public class InternetHeaders extends ObjectSE
InternetHeaders は、RFC822 スタイルのヘッダーを管理するユーティリティクラスです。RFC822 形式のメッセージストリームを指定すると、ヘッダーの終わりを示す空白行まで行を読み取ります。入力ストリームは本文の先頭に配置されます。行はオブジェクト内に格納され、文字列またはHeader
オブジェクトとして抽出できます。このクラスは、主にサービスプロバイダーを対象としています。MimeMessage および MimeBody は、ヘッダーを保持するためにこのクラスを使用します。
RFC822 および MIME ヘッダーに関する注意RFC822 および MIME ヘッダーフィールドに は、US-ASCII 文字のみを含める必要があります。ヘッダーに US-ASCII 以外の文字が含まれている場合は、RFC 2047 の規則に従ってエンコードする必要があります。このパッケージで提供されている MimeUtility クラスを使用して、これを実現できます。
setHeader
、addHeader
、addHeaderLine
メソッドの呼び出し元は、指定されたヘッダーの MIME 要件を適用する責任があります。さらに、これらのヘッダーフィールドは、トランスポートの行長制限(SMTP の場合は 1000 バイト)を超える場合は、送信する前に折りたたむ(折り返す)必要があります。受信したヘッダーが折りたたまれている可能性があります。アプリケーションは、必要に応じてヘッダーを折りたたんだり展開したりする責任があります。現在の実装はシステムプロパティ
mail.mime.ignorewhitespacelines
をサポートしています。これを true に設定すると、空白のみを含む行がヘッダーを終了する空白行と見なされます。- 作成者:
- John Mani, Bill Shannon
- 関連事項:
MimeUtility
ネストされたクラスのサマリー
ネストされたクラス 修飾子と型 クラス 説明 protected static class
InternetHeaders.InternetHeader
個別のインターネットヘッダー。
フィールドサマリー
フィールド 修飾子と型 フィールド 説明 protected ListSE<InternetHeaders.InternetHeader>
headers
プレースホルダーエントリを含む、ヘッダーの実際のリスト。
コンストラクターのサマリー
コンストラクター コンストラクター 説明 InternetHeaders()
空の InternetHeaders オブジェクトを作成します。InternetHeaders(InputStreamSE is)
ヘッダーと本文を区切る空白行まで、指定された RFC822 メッセージストリームを読み取って解析します。InternetHeaders(InputStreamSE is, boolean allowutf8)
ヘッダーと本文を区切る空白行まで、指定された RFC822 メッセージストリームを読み取って解析します。
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 void
addHeader(StringSE name, StringSE value)
指定した名前と値のヘッダーをヘッダーリストに追加します。void
addHeaderLine(StringSE line)
RFC822 ヘッダー行をヘッダーストアに追加します。EnumerationSE<StringSE>
getAllHeaderLines()
すべてのヘッダー行を文字列の列挙として返します。EnumerationSE<Header>
getAllHeaders()
すべてのヘッダーをHeader
オブジェクトの列挙として返します。StringSE[]
getHeader(StringSE name)
指定されたヘッダーのすべての値を返します。StringSE
getHeader(StringSE name, StringSE delimiter)
このヘッダー名のすべてのヘッダーを取得します。ヘッダーは区切り文字で区切られ、単一の文字列として返されます。EnumerationSE<StringSE>
getMatchingHeaderLines(StringSE[] names)
一致するすべてのヘッダー行を文字列の列挙として返します。EnumerationSE<Header>
getMatchingHeaders(StringSE[] names)
一致するすべてのHeader
オブジェクトを返します。EnumerationSE<StringSE>
getNonMatchingHeaderLines(StringSE[] names)
一致しないすべてのヘッダー行を返すEnumerationSE<Header>
getNonMatchingHeaders(StringSE[] names)
一致しないすべてのHeader
オブジェクトを返します。void
load(InputStreamSE is)
ヘッダーと本文を区切る空白行まで、指定された RFC822 メッセージストリームを読み取って解析します。void
load(InputStreamSE is, boolean allowutf8)
ヘッダーと本文を区切る空白行まで、指定された RFC822 メッセージストリームを読み取って解析します。void
removeHeader(StringSE name)
指定された名前に一致するすべてのヘッダーエントリを削除しますvoid
setHeader(StringSE name, StringSE value)
名前に一致する最初のヘッダー行を値に変更し、既存のヘッダーが一致しない場合は新しいヘッダーを追加します。
フィールドの詳細
headers
protected ListSE<InternetHeaders.InternetHeader> headers
プレースホルダーエントリを含む、ヘッダーの実際のリスト。プレースホルダーエントリは null 値のヘッダーであり、InternetHeaders クラスのクライアントには表示されません。プレースホルダーエントリは、ヘッダーの優先順位を追跡するために使用されます。ヘッダーは実際にはリストから削除されることはなく、プレースホルダーエントリに変換されます。新しいヘッダーは、同じ名前の既存のヘッダーの後に追加されます(Received
およびReturn-Path
ヘッダーの場合はその前に追加されます)。既存のヘッダーまたはヘッダーのプレースホルダーが見つからない場合、":" という名前の特別なプレースホルダーの後に新しいヘッダーが追加されます。- 導入:
- JavaMail 1.4
コンストラクターの詳細
InternetHeaders
public InternetHeaders()
空の InternetHeaders オブジェクトを作成します。ヘッダーの優先順位を示すためにプレースホルダーエントリが挿入されます。
InternetHeaders
public InternetHeaders(InputStreamSE is) throws MessagingException
ヘッダーと本文を区切る空白行まで、指定された RFC822 メッセージストリームを読み取って解析します。入力ストリームは本文の先頭に配置されたままになります。ヘッダー行は内部に保存されます。効率を上げるために、BufferedInputStream を実際の入力ストリームにラップし、それをパラメーターとして渡します。
プレースホルダーエントリは挿入されません。ヘッダーの元の順序は保持されます。
- パラメーター:
is
- RFC822 入力ストリーム- 例外:
MessagingException
- ストリームを読み取る I/O エラーの場合
InternetHeaders
public InternetHeaders(InputStreamSE is, boolean allowutf8) throws MessagingException
ヘッダーと本文を区切る空白行まで、指定された RFC822 メッセージストリームを読み取って解析します。入力ストリームは本文の先頭に配置されたままになります。ヘッダー行は内部に保存されます。効率を上げるために、BufferedInputStream を実際の入力ストリームにラップし、それをパラメーターとして渡します。
プレースホルダーエントリは挿入されません。ヘッダーの元の順序は保持されます。
- パラメーター:
is
- RFC822 入力ストリームallowutf8
- UTF-8 でエンコードされたヘッダーが許可されている場合- 例外:
MessagingException
- ストリームを読み取る I/O エラーの場合- 導入:
- JavaMail 1.6
メソッドの詳細
load
public void load(InputStreamSE is) throws MessagingException
指定された RFC822 メッセージストリームを読み取り、ヘッダーと本文を区切る空白行まで解析します。この InternetHeaders オブジェクト内にヘッダー行を格納します。ヘッダー行の順序は保持されます。ヘッダー行はこの InternetHeaders オブジェクトに追加されるため、このオブジェクトの既存のヘッダーは影響を受けないことに注意してください。ヘッダーは、既存のヘッダーリストの最後に順番に追加されます。
- パラメーター:
is
- RFC822 入力ストリーム- 例外:
MessagingException
- ストリームを読み取る I/O エラーの場合
load
public void load(InputStreamSE is, boolean allowutf8) throws MessagingException
指定された RFC822 メッセージストリームを読み取り、ヘッダーと本文を区切る空白行まで解析します。この InternetHeaders オブジェクト内にヘッダー行を格納します。ヘッダー行の順序は保持されます。ヘッダー行はこの InternetHeaders オブジェクトに追加されるため、このオブジェクトの既存のヘッダーは影響を受けないことに注意してください。ヘッダーは、既存のヘッダーリストの最後に順番に追加されます。
- パラメーター:
is
- RFC822 入力ストリームallowutf8
- UTF-8 でエンコードされたヘッダーが許可されている場合- 例外:
MessagingException
- ストリームを読み取る I/O エラーの場合- 導入:
- JavaMail 1.6
getHeader
public StringSE[] getHeader(StringSE name)
指定されたヘッダーのすべての値を返します。値は String オブジェクトです。指定された名前のヘッダーが存在しない場合、null
を返します。- パラメーター:
name
- ヘッダー名- 戻り値:
- ヘッダー値の配列、またはない場合は null
getHeader
public StringSE getHeader(StringSE name, StringSE delimiter)
このヘッダー名のすべてのヘッダーを取得します。ヘッダーは区切り文字で区切られ、単一の文字列として返されます。区切り文字がnull
の場合、最初のヘッダーのみが返されます。指定された名前のヘッダーが存在しない場合、null
を返します。- パラメーター:
name
- ヘッダー名delimiter
- デリミタ- 戻り値:
- この名前のすべてのヘッダーの値フィールド、またはない場合は null
setHeader
public void setHeader(StringSE name, StringSE value)
名前に一致する最初のヘッダー行を値を持つように変更し、既存のヘッダーに一致しない場合は新しいヘッダーを追加します。最初のヘッダーを除くすべての一致するヘッダーを削除します。RFC822 ヘッダーには US-ASCII 文字のみを含めることができることに注意してください
- パラメーター:
name
- ヘッダー名value
- ヘッダー値
addHeader
public void addHeader(StringSE name, StringSE value)
指定した名前と値のヘッダーをヘッダーリストに追加します。現在の実装は、最もよく知られているヘッダーの優先順序を認識しており、その順序でヘッダーを挿入します。さらに、
Received
ヘッダーは逆の順序(新しいものから古いものへ)で挿入する必要があり、ヘッダーの先頭に表示する必要があり、その前に可能なReturn-Path
ヘッダーのみが表示される必要があることを認識しています。RFC822 ヘッダーには、US-ASCII 文字のみを含めることができることに注意してください。
- パラメーター:
name
- ヘッダー名value
- ヘッダー値
removeHeader
public void removeHeader(StringSE name)
指定された名前に一致するすべてのヘッダーエントリを削除します- パラメーター:
name
- ヘッダー名
getAllHeaders
public EnumerationSE<Header> getAllHeaders()
すべてのヘッダーをHeader
オブジェクトの列挙として返します。- 戻り値:
- ヘッダーオブジェクトの列挙
getMatchingHeaders
public EnumerationSE<Header> getMatchingHeaders(StringSE[] names)
一致するすべてのHeader
オブジェクトを返します。- パラメーター:
names
- 返すヘッダー- 戻り値:
- 一致するヘッダーオブジェクトの列挙
getNonMatchingHeaders
public EnumerationSE<Header> getNonMatchingHeaders(StringSE[] names)
一致しないすべてのHeader
オブジェクトを返します。- パラメーター:
names
- 返さないヘッダー- 戻り値:
- 一致しないヘッダーオブジェクトの列挙
addHeaderLine
public void addHeaderLine(StringSE line)
RFC822 ヘッダー行をヘッダーストアに追加します。行がスペースまたはタブ(継続行)で始まる場合は、リストの最後のヘッダー行に追加します。それ以外の場合は、新しいヘッダー行をリストに追加します。RFC822 ヘッダーには US-ASCII 文字のみを含めることができることに注意してください
- パラメーター:
line
- 生の RFC822 ヘッダー行
getAllHeaderLines
public EnumerationSE<StringSE> getAllHeaderLines()
すべてのヘッダー行を文字列の列挙として返します。- 戻り値:
- すべてのヘッダー行の文字列の列挙
getMatchingHeaderLines
public EnumerationSE<StringSE> getMatchingHeaderLines(StringSE[] names)
一致するすべてのヘッダー行を文字列の列挙として返します。- パラメーター:
names
- 返すヘッダー- 戻り値:
- 一致するすべてのヘッダー行の文字列の列挙
getNonMatchingHeaderLines
public EnumerationSE<StringSE> getNonMatchingHeaderLines(StringSE[] names)
一致しないすべてのヘッダー行を返す- パラメーター:
names
- 返さないヘッダー- 戻り値:
- 一致しないすべてのヘッダー行の文字列の列挙