パッケージ jakarta.mail.internet

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

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

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

    • 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 を返します。
      パラメーター:
      delimiter - デリミタ
      name - ヘッダー名
      戻り値:
      この名前のすべてのヘッダーの値フィールド、またはない場合は 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 - 返さないヘッダー
      戻り値:
      一致しないすべてのヘッダー行の文字列の列挙