パッケージ jakarta.mail.internet

クラス MimeMultipart

java.lang.ObjectSE
jakarta.mail.Multipart
jakarta.mail.internet.MimeMultipart

public class MimeMultipart extends Multipart
MimeMultipart クラスは、マルチパートデータに MIME 規則を使用する抽象マルチパートクラスの実装です。

MimeMultipart は、主な型が「マルチパート」である MimePart から(パートの getContent() メソッドを呼び出すことにより)取得するか、新しい MimeMessage の作成の一部としてクライアントが作成できます。

デフォルトのマルチパートサブ型は「混合」です。「代替」、「関連」などの他のマルチパートサブ型は、その型のマルチパートコンテンツの追加のセマンティクスを実装する追加のメソッドを使用して、MimeMultipart のサブクラスとして実装できます。その意図は、サービスプロバイダー、メール JavaBean ライター、メールクライアントがそのような多くのサブクラスとそのコマンド Bean を書き込み、JavaBeans アクティベーションフレームワークにインストールすることで、Jakarta Mail 実装とそのクライアントがこれらのクラスを透過的に見つけて使用できるようにすることです。MIME マルチパートハンドラーは他の型ハンドラーと同様に扱われ、マルチパートハンドラーを提供するプロセスを Jakarta Mail API から分離します。これらの追加の MimeMultipart サブクラスがないと、MIME マルチパートデータのすべてのサブ型が MimeMultipart オブジェクトとして表示されます。

アプリケーションは、MimeMultipart(String subtype) コンストラクターを使用して、任意のサブ型の MIME マルチパートオブジェクトを直接構築できます。例: "multipart/alternative" オブジェクトを作成するには、new MimeMultipart("alternative") を使用します。

mail.mime.multipart.ignoremissingendboundary プロパティを false に設定すると、マルチパートデータが必要な終了境界線で終わっていない場合に MessagingException がスローされます。このプロパティが true に設定されているか、設定されていない場合、欠落している終了境界はエラーと見なされず、最終的なボディパーツはデータの最後で終了します。

MimeMultipart の Content-Type に boundary パラメーターが含まれていない場合、mail.mime.multipart.ignoremissingboundaryparameter システムプロパティを false に設定して MessagingException をスローすることができます。このプロパティが true に設定されているか、設定されていない場合、マルチパート解析コードは、境界線のように見える線を探し、それを部分を区切る境界として使用します。

mail.mime.multipart.ignoreexistingboundaryparameter システムプロパティを true に設定すると、境界が無視され、代わりに mail.mime.multipart.ignoremissingboundaryparameter と同様にメッセージ内の境界線が検索されます。

通常、ボディパーツを含まない MimeMultipart を書き込む場合、またはボディパーツを含まないマルチパートメッセージを解析しようとすると、MessagingException がスローされます。MIME 仕様では、ボディパーツのないマルチパートコンテンツは許可されていません。mail.mime.multipart.allowempty システムプロパティを true に設定すると、この動作をオーバーライドできます。このような MimeMultipart を書き込むと、1 つの空のパーツが含まれます。このようなマルチパートを読み取る場合、MimeMultipart はボディパーツなしで作成されます。

作成者:
John Mani, Bill Shannon, Max Spivak
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    protected boolean
    コンストラクターから呼び出される initializeProperties() メソッドと parse メソッドで設定される "mail.mime.multipart.allowempty" プロパティに対応するフラグ。
    protected boolean
    最後の報酬ラインを見たことがありますか?
    protected DataSource
    InputStream を供給する DataSource。
    protected boolean
    コンストラクターから呼び出される initializeProperties() メソッドと parse メソッドで設定される "mail.mime.multipart.ignoreexistingboundaryparameter" プロパティに対応するフラグ。
    protected boolean
    コンストラクターから呼び出される initializeProperties() メソッドと parse メソッドで設定される "mail.mime.multipart.ignoremissingboundaryparameter" プロパティに対応するフラグ。
    protected boolean
    コンストラクターから呼び出される initializeProperties() メソッドと parse メソッドで設定される "mail.mime.multipart.ignoremissingendboundary" プロパティに対応するフラグ。
    protected boolean
    InputStream からのデータを解析しましたか ?
    protected StringSE
    MIME マルチパートプリアンブルテキスト。最初の境界線の前にあるテキスト。

    クラス jakarta.mail.Multipart から継承されたフィールド

    contentType, parent, parts, streamProvider
  • コンストラクターの概要

    コンストラクター
    コンストラクター
    説明
    デフォルトコンストラクター。
    指定された DataSource から MimeMultipart オブジェクトとそのボディパーツを構築します。
    デフォルトの「混合」サブ型の MimeMultipart オブジェクトを、指定されたボディパーツで作成します。
    指定されたサブ型の MimeMultipart オブジェクトを構築します。
    MimeMultipart(StringSE subtype, BodyPart... parts)
    指定されたサブ型の MimeMultipart オブジェクトを、指定されたボディパーツで構築します。
  • 方法の概要

    修飾子と型
    メソッド
    説明
    void
    マルチパートにパートを追加します。
    void
    addBodyPart(BodyPart part, int index)
    index の位置に BodyPart を追加します。
    protected InternetHeaders
    指定された InputStream からヘッダーをロードする InternetHeaders オブジェクトを作成して返します。
    protected MimeBodyPart
    createMimeBodyPart(InternetHeaders headers, byte[] content)
    InputStream から解析されたボディパーツを表す MimeBodyPart オブジェクトを作成して返します。
    protected MimeBodyPart
    InputStream から解析されたボディパーツを表す MimeBodyPart オブジェクトを作成して返します。
    getBodyPart(int index)
    指定された BodyPart を取得します。
    指定された ContentID(CID)によって参照される MimeBodyPart を取得します。
    int
    囲まれた BodyPart オブジェクトの数を返します。
    このマルチパートの最初のボディパーツの前に表示されるプリアンブルテキストがある場合は、それを取得します。
    protected void
    クラスのドキュメントで前述したシステムプロパティに基づいて、解析動作を制御するフラグを初期化します。
    boolean
    このマルチパートの最後の境界線が見られた場合は true を返します。
    protected void
    DataSource から InputStream を解析し、適切な MimeBodyParts を構築します。
    void
    removeBodyPart(int index)
    指定された場所(0 から始まる)のパーツを削除します。
    boolean
    マルチパートメッセージから指定されたパートを削除します。
    void
    最初の本文部分の前に含まれるプリアンブルテキストを設定します。
    void
    サブ型を設定します。
    protected void
    ヘッダーを更新します。
    void
    すべてのパーツを反復処理し、境界で区切られた各 MIME パーツを出力します。

    クラス jakarta.mail.Multipart から継承されたメソッド

    getContentType, getParent, setMultipartDataSource, setParent

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
  • フィールドの詳細

    • ds

      protected DataSource ds
      InputStream を供給する DataSource。
    • parsed

      protected boolean parsed
      InputStream からのデータを解析しましたか? デフォルトは true です。コンストラクターに、解析する必要がある InputStream を含む DataSource が指定されている場合は、false に設定します。
    • complete

      protected boolean complete
      最後の報酬ラインを見たことがありますか?
      導入:
      JavaMail 1.5
    • preamble

      protected StringSE preamble
      MIME マルチパートプリアンブルテキスト。最初の境界線の前にあるテキスト。
      導入:
      JavaMail 1.5
    • ignoreMissingEndBoundary

      protected boolean ignoreMissingEndBoundary
      コンストラクターから呼び出される initializeProperties() メソッドと parse メソッドで設定される "mail.mime.multipart.ignoremissingendboundary" プロパティに対応するフラグ。
      導入:
      JavaMail 1.5
    • ignoreMissingBoundaryParameter

      protected boolean ignoreMissingBoundaryParameter
      コンストラクターから呼び出される initializeProperties() メソッドと parse メソッドで設定される "mail.mime.multipart.ignoremissingboundaryparameter" プロパティに対応するフラグ。
      導入:
      JavaMail 1.5
    • ignoreExistingBoundaryParameter

      protected boolean ignoreExistingBoundaryParameter
      コンストラクターから呼び出される initializeProperties() メソッドと parse メソッドで設定される "mail.mime.multipart.ignoreexistingboundaryparameter" プロパティに対応するフラグ。
      導入:
      JavaMail 1.5
    • allowEmpty

      protected boolean allowEmpty
      コンストラクターから呼び出される initializeProperties() メソッドと parse メソッドで設定される "mail.mime.multipart.allowempty" プロパティに対応するフラグ。
      導入:
      JavaMail 1.5
  • コンストラクターの詳細

    • MimeMultipart

      public MimeMultipart()
      デフォルトのコンストラクター。空の MimeMultipart オブジェクトが作成されます。そのコンテンツ型は "multipart/mixed" に設定されています。一意の境界文字列が生成され、この文字列が contentType フィールドの「境界」パラメーターとして設定されます。

      MimeBodyParts は後で追加されるかもしれません。

    • MimeMultipart

      public MimeMultipart(StringSE subtype)
      指定されたサブ型の MimeMultipart オブジェクトを構築します。一意の境界文字列が生成され、この文字列は contentType フィールドの「境界」パラメーターとして設定されます。initializeProperties() メソッドを呼び出します。

      MimeBodyParts は後で追加されるかもしれません。

      パラメーター:
      subtype - MIME コンテンツサブ型
    • MimeMultipart

      public MimeMultipart(BodyPart... parts) throws MessagingException
      デフォルトの「混合」サブ型の MimeMultipart オブジェクトを、指定されたボディパーツで作成します。より多くの体の部分が後で追加されることがあります。
      パラメーター:
      parts - 体の部分
      例外:
      MessagingException - 失敗
      導入:
      JavaMail 1.5
    • MimeMultipart

      public MimeMultipart(StringSE subtype, BodyPart... parts) throws MessagingException
      指定されたサブ型の MimeMultipart オブジェクトを、指定されたボディパーツで構築します。より多くの体の部分が後で追加されることがあります。
      パラメーター:
      subtype - MIME コンテンツサブ型
      parts - 体の部分
      例外:
      MessagingException - 失敗
      導入:
      JavaMail 1.5
    • MimeMultipart

      public MimeMultipart(DataSource ds) throws MessagingException
      指定された DataSource から MimeMultipart オブジェクトとそのボディパーツを構築します。

      このコンストラクターは、指定された DataSource が MultipartDataSource オブジェクトである状況を特殊なケースとして処理します。この場合、このメソッドは、MultipartDataSource オブジェクトを取得するスーパークラス(つまり、マルチパート)コンストラクターを呼び出すだけです。

      それ以外の場合、DataSource は MIME マルチパートバイトストリームを提供すると想定されます。parsed フラグは false に設定されます。ボディパーツのデータが必要な場合、パーサーはこの DataSource のコンテンツ型から "boundary" パラメーターを抽出し、「プリアンブル」をスキップし、終了境界までバイトを読み取り、ストリームの各パーツに MimeBodyParts を作成します。

      パラメーター:
      ds - DataSource、MultipartDataSource にすることができます
      例外:
      ParseException - メッセージの解析に失敗した場合
      MessagingException - その他の障害の場合
  • メソッドの詳細

    • initializeProperties

      protected void initializeProperties()
      クラスのドキュメントで前述したシステムプロパティに基づいて、解析動作を制御するフラグを初期化します。
      導入:
      JavaMail 1.5
    • setSubType

      public void setSubType(StringSE subtype) throws MessagingException
      サブ型を設定します。このメソッドは、クライアントによって作成された新しい MimeMultipart オブジェクトでのみ呼び出す必要があります。このようなマルチパートオブジェクトのデフォルトのサブ型は「混合」です。
      パラメーター:
      subtype - サブタイプ
      例外:
      MessagingException - 失敗
    • getCount

      public int getCount() throws MessagingException
      囲まれた BodyPart オブジェクトの数を返します。
      オーバーライド:
      クラス MultipartgetCount 
      戻り値:
      パーツ数
      例外:
      MessagingException - 失敗
      関連事項:
    • getBodyPart

      public BodyPart getBodyPart(int index) throws MessagingException
      指定された BodyPart を取得します。BodyParts には 0 から始まる番号が付けられています。
      オーバーライド:
      クラス MultipartgetBodyPart 
      パラメーター:
      index - 目的の BodyPart のインデックス
      戻り値:
      一部
      例外:
      MessagingException - そのような BodyPart が存在しない場合
    • getBodyPart

      public BodyPart getBodyPart(StringSE CID) throws MessagingException
      指定された ContentID(CID)によって参照される MimeBodyPart を取得します。パーツが見つからない場合は null を返します。
      パラメーター:
      CID - 目的のパーツの ContentID
      戻り値:
      一部
      例外:
      MessagingException - 失敗
    • removeBodyPart

      public boolean removeBodyPart(BodyPart part) throws MessagingException
      マルチパートメッセージから指定されたパートを削除します。削除されたパーツの後のすべてのパーツを 1 つ下に移動します。
      オーバーライド:
      クラス MultipartremoveBodyPart 
      パラメーター:
      part - 削除する部分
      戻り値:
      パーツが削除された場合は true、そうでない場合は false
      例外:
      MessagingException - そのようなパートが存在しない場合
      IllegalWriteException - 基本となる実装が既存の値の変更をサポートしていない場合
    • removeBodyPart

      public void removeBodyPart(int index) throws MessagingException
      指定された場所(0 から始まる)のパーツを削除します。削除されたパーツの後のすべてのパーツを 1 つ下に移動します。
      オーバーライド:
      クラス MultipartremoveBodyPart 
      パラメーター:
      index - 削除するパーツのインデックス
      例外:
      IndexOutOfBoundsExceptionSE - 指定されたインデックスが範囲外の場合。
      IllegalWriteException - 基本となる実装が既存の値の変更をサポートしていない場合
      MessagingException - その他の障害の場合
    • addBodyPart

      public void addBodyPart(BodyPart part) throws MessagingException
      マルチパートにパートを追加します。BodyPart が既存のパーツのリストに追加されます。
      オーバーライド:
      クラス MultipartaddBodyPart 
      パラメーター:
      part - 追加するパーツ
      例外:
      IllegalWriteException - 基本となる実装が既存の値の変更をサポートしていない場合
      MessagingException - その他の障害の場合
    • addBodyPart

      public void addBodyPart(BodyPart part, int index) throws MessagingException
      index の位置に BodyPart を追加します。index がリストの最後のものでない場合、後続の部分は上にシフトされます。index が存在するパーツの数より大きい場合、BodyPart が末尾に追加されます。
      オーバーライド:
      クラス MultipartaddBodyPart 
      パラメーター:
      part - 挿入する BodyPart
      index - パーツを挿入する場所
      例外:
      IllegalWriteException - 基本となる実装が既存の値の変更をサポートしていない場合
      MessagingException - その他の障害の場合
    • isComplete

      public boolean isComplete() throws MessagingException
      このマルチパートの最後の境界線が見られた場合は true を返します。マルチパートコンテンツを解析するとき、このクラスは、デフォルトで、最終的なマルチパート境界線が表示される前に入力の終わりに到達した場合、エラーなしで解析を終了します。そのような場合、このメソッドは false を返します。(System プロパティ "mail.mime.multipart.ignoremissingendboundary" が false に設定されている場合、そのようなメッセージを解析すると、代わりに MessagingException がスローされます。)
      戻り値:
      最後の境界線が見られた場合は true
      例外:
      MessagingException - 失敗
      導入:
      JavaMail 1.4
    • getPreamble

      public StringSE getPreamble() throws MessagingException
      このマルチパートの最初のボディパーツの前に表示されるプリアンブルテキストがある場合は、それを取得します。IMAP などの一部のプロトコルでは、プリアンブルテキストへのアクセスが許可されません。
      戻り値:
      プリアンブルテキスト。プリアンブルがない場合は null
      例外:
      MessagingException - 失敗
      導入:
      JavaMail 1.4
    • setPreamble

      public void setPreamble(StringSE preamble) throws MessagingException
      最初の本文部分の前に含まれるプリアンブルテキストを設定します。通常、アプリケーションにはプリアンブルテキストを含めないでください。場合によっては、プリ MIME ソフトウェアのユーザー向けの説明を含むプリアンブルテキストを含めると役立つことがあります。プリアンブルテキストは、改行を含む完全な行である必要があります。
      パラメーター:
      preamble - 前文
      例外:
      MessagingException - 失敗
      導入:
      JavaMail 1.4
    • updateHeaders

      protected void updateHeaders() throws MessagingException
      ヘッダーを更新します。ここでのデフォルトの実装は、子 BodyParts のそれぞれで updateHeaders メソッドを呼び出すだけです。

      境界パラメーターは、新しい空の MimeMultipart オブジェクトが作成されたときにすでに設定されていることに注意してください。

      このマルチパートを含む Message オブジェクトで saveChanges メソッドが呼び出されると、このメソッドが呼び出されます。これは通常、メッセージ送信プロセスの一部として行われますが、クライアントは何度でも呼び出すことができることに注意してください。特定の MimeMultipart サブクラスのヘッダー更新プロセスに負荷がかかる場合は、それ自体が内部状態が実際に変更されたかどうかを追跡し、必要な場合にのみヘッダー更新を実行する必要があります。

      例外:
      MessagingException - 失敗
    • writeTo

      public void writeTo(OutputStreamSE os) throws IOExceptionSE, MessagingException
      すべてのパーツを反復処理し、境界で区切られた各 MIME パーツを出力します。
      次で指定:
      クラス MultipartwriteTo 
      パラメーター:
      os - 書き込むストリーム
      例外:
      IOExceptionSE - IO 関連の例外が発生した場合
      MessagingException - その他の障害の場合
    • parse

      protected void parse() throws MessagingException
      DataSource から InputStream を解析し、適切な MimeBodyParts を構築します。parsed フラグは true に設定され、エントリ時に true の場合は何も行われません。このメソッドは、データが解析されたことを確認するために、ボディパーツのデータを必要とする他のすべてのメソッドによって呼び出されます。initializeProperties() メソッドは、データを解析する前に呼び出されます。
      例外:
      ParseException - メッセージの解析に失敗した場合
      MessagingException - その他の障害の場合
      導入:
      JavaMail 1.2
    • createInternetHeaders

      protected InternetHeaders createInternetHeaders(InputStreamSE is) throws MessagingException
      指定された InputStream からヘッダーをロードする InternetHeaders オブジェクトを作成して返します。必要に応じて、サブクラスはこのメソッドをオーバーライドして、InternetHeaders のサブクラスを返すことができます。この実装は、単に InternetHeaders オブジェクトを作成して返します。
      パラメーター:
      is - ヘッダーを読み取る InputStream
      戻り値:
      InternetHeaders オブジェクト
      例外:
      MessagingException - 失敗
      導入:
      JavaMail 1.2
    • createMimeBodyPart

      protected MimeBodyPart createMimeBodyPart(InternetHeaders headers, byte[] content) throws MessagingException
      InputStream から解析されたボディパーツを表す MimeBodyPart オブジェクトを作成して返します。必要に応じて、サブクラスはこのメソッドをオーバーライドして、MimeBodyPart のサブクラスを返すことができます。この実装は、単に MimeBodyPart オブジェクトを作成して返します。
      パラメーター:
      headers - ボディパーツのヘッダー
      content - 体の部分の内容
      戻り値:
      MimeBodyPart
      例外:
      MessagingException - 失敗
      導入:
      JavaMail 1.2
    • createMimeBodyPart

      protected MimeBodyPart createMimeBodyPart(InputStreamSE is) throws MessagingException
      InputStream から解析されたボディパーツを表す MimeBodyPart オブジェクトを作成して返します。必要に応じて、サブクラスはこのメソッドをオーバーライドして、MimeBodyPart のサブクラスを返すことができます。この実装は、単に MimeBodyPart オブジェクトを作成して返します。
      パラメーター:
      is - ボディパーツを含む InputStream
      戻り値:
      MimeBodyPart
      例外:
      MessagingException - 失敗
      導入:
      JavaMail 1.2