クラス MimeMultipart
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 DataSourceInputStream を供給する 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 booleanInputStream からのデータを解析しましたか ?protected StringSEMIME マルチパートプリアンブルテキスト。最初の境界線の前にあるテキスト。クラス jakarta.mail.Multipart から継承されたフィールド
contentType, parent, parts, streamProviderコンストラクターの概要
コンストラクターコンストラクター説明デフォルトコンストラクター。指定された DataSource から MimeMultipart オブジェクトとそのボディパーツを構築します。MimeMultipart(BodyPart... parts) デフォルトの「混合」サブ型の MimeMultipart オブジェクトを、指定されたボディパーツで作成します。MimeMultipart(StringSE subtype) 指定されたサブ型の MimeMultipart オブジェクトを構築します。MimeMultipart(StringSE subtype, BodyPart... parts) 指定されたサブ型の MimeMultipart オブジェクトを、指定されたボディパーツで構築します。方法の概要
修飾子と型メソッド説明voidaddBodyPart(BodyPart part) マルチパートにパートを追加します。voidaddBodyPart(BodyPart part, int index) indexの位置に BodyPart を追加します。protected InternetHeaders指定された InputStream からヘッダーをロードする InternetHeaders オブジェクトを作成して返します。protected MimeBodyPartcreateMimeBodyPart(InternetHeaders headers, byte[] content) InputStream から解析されたボディパーツを表す MimeBodyPart オブジェクトを作成して返します。protected MimeBodyPartInputStream から解析されたボディパーツを表す MimeBodyPart オブジェクトを作成して返します。getBodyPart(int index) 指定された BodyPart を取得します。getBodyPart(StringSE CID) 指定された ContentID(CID)によって参照される MimeBodyPart を取得します。intgetCount()囲まれた BodyPart オブジェクトの数を返します。このマルチパートの最初のボディパーツの前に表示されるプリアンブルテキストがある場合は、それを取得します。protected voidクラスのドキュメントで前述したシステムプロパティに基づいて、解析動作を制御するフラグを初期化します。booleanこのマルチパートの最後の境界線が見られた場合は true を返します。protected voidparse()DataSource から InputStream を解析し、適切な MimeBodyParts を構築します。voidremoveBodyPart(int index) 指定された場所(0 から始まる)のパーツを削除します。booleanremoveBodyPart(BodyPart part) マルチパートメッセージから指定されたパートを削除します。voidsetPreamble(StringSE preamble) 最初の本文部分の前に含まれるプリアンブルテキストを設定します。voidsetSubType(StringSE subtype) サブ型を設定します。protected voidヘッダーを更新します。voidすべてのパーツを反復処理し、境界で区切られた各 MIME パーツを出力します。クラス jakarta.mail.Multipart から継承されたメソッド
getContentType, getParent, setMultipartDataSource, setParent
フィールドの詳細
ds
InputStream を供給する DataSource。parsed
protected boolean parsedInputStream からのデータを解析しましたか? デフォルトは true です。コンストラクターに、解析する必要がある InputStream を含む DataSource が指定されている場合は、false に設定します。complete
protected boolean complete最後の報酬ラインを見たことがありますか?- 導入:
- JavaMail 1.5
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
指定されたサブ型の MimeMultipart オブジェクトを構築します。一意の境界文字列が生成され、この文字列はcontentTypeフィールドの「境界」パラメーターとして設定されます。initializeProperties()メソッドを呼び出します。MimeBodyParts は後で追加されるかもしれません。
- パラメーター:
subtype- MIME コンテンツサブ型
MimeMultipart
デフォルトの「混合」サブ型の MimeMultipart オブジェクトを、指定されたボディパーツで作成します。より多くの体の部分が後で追加されることがあります。- パラメーター:
parts- 体の部分- 例外:
MessagingException- 失敗- 導入:
- JavaMail 1.5
MimeMultipart
指定されたサブ型の MimeMultipart オブジェクトを、指定されたボディパーツで構築します。より多くの体の部分が後で追加されることがあります。- パラメーター:
subtype- MIME コンテンツサブ型parts- 体の部分- 例外:
MessagingException- 失敗- 導入:
- JavaMail 1.5
MimeMultipart
指定された 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
サブ型を設定します。このメソッドは、クライアントによって作成された新しい MimeMultipart オブジェクトでのみ呼び出す必要があります。このようなマルチパートオブジェクトのデフォルトのサブ型は「混合」です。- パラメーター:
subtype- サブタイプ- 例外:
MessagingException- 失敗
getCount
囲まれた BodyPart オブジェクトの数を返します。- オーバーライド:
- クラス
MultipartのgetCount - 戻り値:
- パーツ数
- 例外:
MessagingException- 失敗- 関連事項:
getBodyPart
指定された BodyPart を取得します。BodyParts には 0 から始まる番号が付けられています。- オーバーライド:
- クラス
MultipartのgetBodyPart - パラメーター:
index- 目的の BodyPart のインデックス- 戻り値:
- 一部
- 例外:
MessagingException- そのような BodyPart が存在しない場合
getBodyPart
指定された ContentID(CID)によって参照される MimeBodyPart を取得します。パーツが見つからない場合は null を返します。- パラメーター:
CID- 目的のパーツの ContentID- 戻り値:
- 一部
- 例外:
MessagingException- 失敗
removeBodyPart
マルチパートメッセージから指定されたパートを削除します。削除されたパーツの後のすべてのパーツを 1 つ下に移動します。- オーバーライド:
- クラス
MultipartのremoveBodyPart - パラメーター:
part- 削除する部分- 戻り値:
- パーツが削除された場合は true、そうでない場合は false
- 例外:
MessagingException- そのようなパートが存在しない場合IllegalWriteException- 基本となる実装が既存の値の変更をサポートしていない場合
removeBodyPart
指定された場所(0 から始まる)のパーツを削除します。削除されたパーツの後のすべてのパーツを 1 つ下に移動します。- オーバーライド:
- クラス
MultipartのremoveBodyPart - パラメーター:
index- 削除するパーツのインデックス- 例外:
IndexOutOfBoundsExceptionSE- 指定されたインデックスが範囲外の場合。IllegalWriteException- 基本となる実装が既存の値の変更をサポートしていない場合MessagingException- その他の障害の場合
addBodyPart
マルチパートにパートを追加します。BodyPart が既存のパーツのリストに追加されます。- オーバーライド:
- クラス
MultipartのaddBodyPart - パラメーター:
part- 追加するパーツ- 例外:
IllegalWriteException- 基本となる実装が既存の値の変更をサポートしていない場合MessagingException- その他の障害の場合
addBodyPart
indexの位置に BodyPart を追加します。indexがリストの最後のものでない場合、後続の部分は上にシフトされます。indexが存在するパーツの数より大きい場合、BodyPart が末尾に追加されます。- オーバーライド:
- クラス
MultipartのaddBodyPart - パラメーター:
part- 挿入する BodyPartindex- パーツを挿入する場所- 例外:
IllegalWriteException- 基本となる実装が既存の値の変更をサポートしていない場合MessagingException- その他の障害の場合
isComplete
このマルチパートの最後の境界線が見られた場合は true を返します。マルチパートコンテンツを解析するとき、このクラスは、デフォルトで、最終的なマルチパート境界線が表示される前に入力の終わりに到達した場合、エラーなしで解析を終了します。そのような場合、このメソッドは false を返します。(System プロパティ "mail.mime.multipart.ignoremissingendboundary" が false に設定されている場合、そのようなメッセージを解析すると、代わりに MessagingException がスローされます。)- 戻り値:
- 最後の境界線が見られた場合は true
- 例外:
MessagingException- 失敗- 導入:
- JavaMail 1.4
getPreamble
このマルチパートの最初のボディパーツの前に表示されるプリアンブルテキストがある場合は、それを取得します。IMAP などの一部のプロトコルでは、プリアンブルテキストへのアクセスが許可されません。- 戻り値:
- プリアンブルテキスト。プリアンブルがない場合は null
- 例外:
MessagingException- 失敗- 導入:
- JavaMail 1.4
setPreamble
最初の本文部分の前に含まれるプリアンブルテキストを設定します。通常、アプリケーションにはプリアンブルテキストを含めないでください。場合によっては、プリ MIME ソフトウェアのユーザー向けの説明を含むプリアンブルテキストを含めると役立つことがあります。プリアンブルテキストは、改行を含む完全な行である必要があります。- パラメーター:
preamble- 前文- 例外:
MessagingException- 失敗- 導入:
- JavaMail 1.4
updateHeaders
ヘッダーを更新します。ここでのデフォルトの実装は、子 BodyParts のそれぞれでupdateHeadersメソッドを呼び出すだけです。境界パラメーターは、新しい空の MimeMultipart オブジェクトが作成されたときにすでに設定されていることに注意してください。
このマルチパートを含む Message オブジェクトで
saveChangesメソッドが呼び出されると、このメソッドが呼び出されます。これは通常、メッセージ送信プロセスの一部として行われますが、クライアントは何度でも呼び出すことができることに注意してください。特定の MimeMultipart サブクラスのヘッダー更新プロセスに負荷がかかる場合は、それ自体が内部状態が実際に変更されたかどうかを追跡し、必要な場合にのみヘッダー更新を実行する必要があります。- 例外:
MessagingException- 失敗
writeTo
すべてのパーツを反復処理し、境界で区切られた各 MIME パーツを出力します。- 次で指定:
- クラス
MultipartのwriteTo - パラメーター:
os- 書き込むストリーム- 例外:
IOExceptionSE- IO 関連の例外が発生した場合MessagingException- その他の障害の場合
parse
DataSource から InputStream を解析し、適切な MimeBodyParts を構築します。parsedフラグは true に設定され、エントリ時に true の場合は何も行われません。このメソッドは、データが解析されたことを確認するために、ボディパーツのデータを必要とする他のすべてのメソッドによって呼び出されます。initializeProperties()メソッドは、データを解析する前に呼び出されます。- 例外:
ParseException- メッセージの解析に失敗した場合MessagingException- その他の障害の場合- 導入:
- JavaMail 1.2
createInternetHeaders
指定された 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
InputStream から解析されたボディパーツを表す MimeBodyPart オブジェクトを作成して返します。必要に応じて、サブクラスはこのメソッドをオーバーライドして、MimeBodyPart のサブクラスを返すことができます。この実装は、単に MimeBodyPart オブジェクトを作成して返します。- パラメーター:
is- ボディパーツを含む InputStream- 戻り値:
- MimeBodyPart
- 例外:
MessagingException- 失敗- 導入:
- JavaMail 1.2