パッケージ 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 booleanallowEmpty
      コンストラクターから呼び出される initializeProperties() メソッドと parse メソッドで設定される "mail.mime.multipart.allowempty" プロパティに対応するフラグ。
      protected booleancomplete
      最後の報酬ラインを見たことがありますか?
      protected DataSourceds
      InputStream を供給する DataSource。
      protected booleanignoreExistingBoundaryParameter
      コンストラクターから呼び出される initializeProperties() メソッドと parse メソッドで設定される "mail.mime.multipart.ignoreexistingboundaryparameter" プロパティに対応するフラグ。
      protected booleanignoreMissingBoundaryParameter
      コンストラクターから呼び出される initializeProperties() メソッドと parse メソッドで設定される "mail.mime.multipart.ignoremissingboundaryparameter" プロパティに対応するフラグ。
      protected booleanignoreMissingEndBoundary
      コンストラクターから呼び出される initializeProperties() メソッドと parse メソッドで設定される "mail.mime.multipart.ignoremissingendboundary" プロパティに対応するフラグ。
      protected booleanparsed
      InputStream からのデータを解析しましたか? デフォルトは true です。コンストラクターに、解析する必要がある InputStream を含む DataSource が指定されている場合は、false に設定します。
      protected StringSEpreamble
      MIME マルチパートプリアンブルテキスト。最初の境界線の前にあるテキスト。
    • コンストラクターのサマリー

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

      • 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 - 失敗
      • 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 - 失敗
      • 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