パッケージ 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 クラスを使用して、これを実現できます。setHeaderaddHeaderaddHeaderLine メソッドの呼び出し元は、指定されたヘッダーの MIME 要件を適用する責任があります。さらに、これらのヘッダーフィールドは、トランスポートの行長制限(SMTP の場合は 1000 バイト)を超える場合は、送信する前に折りたたむ(折り返す)必要があります。受信したヘッダーが折りたたまれている可能性があります。アプリケーションは、必要に応じてヘッダーを折りたたんだり展開したりする責任があります。

    現在の実装はシステムプロパティ mail.mime.ignorewhitespacelines をサポートしています。これを true に設定すると、空白のみを含む行がヘッダーを終了する空白行と見なされます。

    作成者:
    John Mani, Bill Shannon
    関連事項:
    MimeUtility
    • フィールドの詳細

      • 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 - 返さないヘッダー
        戻り値:
        一致しないすべてのヘッダー行の文字列の列挙