クラス 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
allowEmpty
コンストラクターから呼び出されるinitializeProperties()
メソッドと parse メソッドで設定される "mail.mime.multipart.allowempty" プロパティに対応するフラグ。protected boolean
complete
最後の報酬ラインを見たことがありますか?protected DataSource
ds
InputStream を供給する DataSource。protected boolean
ignoreExistingBoundaryParameter
コンストラクターから呼び出されるinitializeProperties()
メソッドと parse メソッドで設定される "mail.mime.multipart.ignoreexistingboundaryparameter" プロパティに対応するフラグ。protected boolean
ignoreMissingBoundaryParameter
コンストラクターから呼び出されるinitializeProperties()
メソッドと parse メソッドで設定される "mail.mime.multipart.ignoremissingboundaryparameter" プロパティに対応するフラグ。protected boolean
ignoreMissingEndBoundary
コンストラクターから呼び出されるinitializeProperties()
メソッドと parse メソッドで設定される "mail.mime.multipart.ignoremissingendboundary" プロパティに対応するフラグ。protected boolean
parsed
InputStream からのデータを解析しましたか? デフォルトは true です。コンストラクターに、解析する必要がある InputStream を含む DataSource が指定されている場合は、false に設定します。protected StringSE
preamble
MIME マルチパートプリアンブルテキスト。最初の境界線の前にあるテキスト。クラス jakarta.mail.Multipart から継承されたフィールド
contentType, parent, parts, streamProvider
コンストラクターのサマリー
コンストラクター コンストラクター 説明 MimeMultipart()
デフォルトコンストラクター。MimeMultipart(DataSource ds)
指定された DataSource から MimeMultipart オブジェクトとそのボディパーツを構築します。MimeMultipart(BodyPart... parts)
デフォルトの「混合」サブ型の MimeMultipart オブジェクトを、指定されたボディパーツで作成します。MimeMultipart(StringSE subtype)
指定されたサブ型の MimeMultipart オブジェクトを構築します。MimeMultipart(StringSE subtype, BodyPart... parts)
指定されたサブ型の MimeMultipart オブジェクトを、指定されたボディパーツで構築します。
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 void
addBodyPart(BodyPart part)
マルチパートにパートを追加します。void
addBodyPart(BodyPart part, int index)
index
の位置に BodyPart を追加します。protected InternetHeaders
createInternetHeaders(InputStreamSE is)
指定された InputStream からヘッダーをロードする InternetHeaders オブジェクトを作成して返します。protected MimeBodyPart
createMimeBodyPart(InternetHeaders headers, byte[] content)
InputStream から解析されたボディパーツを表す MimeBodyPart オブジェクトを作成して返します。protected MimeBodyPart
createMimeBodyPart(InputStreamSE is)
InputStream から解析されたボディパーツを表す MimeBodyPart オブジェクトを作成して返します。BodyPart
getBodyPart(int index)
指定された BodyPart を取得します。BodyPart
getBodyPart(StringSE CID)
指定された ContentID(CID)によって参照される MimeBodyPart を取得します。int
getCount()
囲まれた BodyPart オブジェクトの数を返します。StringSE
getPreamble()
このマルチパートの最初のボディパーツの前に表示されるプリアンブルテキストがある場合は、それを取得します。protected void
initializeProperties()
クラスのドキュメントで前述したシステムプロパティに基づいて、解析動作を制御するフラグを初期化します。boolean
isComplete()
このマルチパートの最後の境界線が見られた場合は true を返します。protected void
parse()
DataSource から InputStream を解析し、適切な MimeBodyParts を構築します。void
removeBodyPart(int index)
指定された場所(0 から始まる)のパーツを削除します。boolean
removeBodyPart(BodyPart part)
マルチパートメッセージから指定されたパートを削除します。void
setPreamble(StringSE preamble)
最初の本文部分の前に含まれるプリアンブルテキストを設定します。void
setSubType(StringSE subtype)
サブ型を設定します。protected void
updateHeaders()
ヘッダーを更新します。void
writeTo(OutputStreamSE os)
すべてのパーツを反復処理し、境界で区切られた各 MIME パーツを出力します。クラス jakarta.mail.Multipart から継承されたメソッド
getContentType, getParent, setMultipartDataSource, setParent
フィールドの詳細
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 オブジェクトの数を返します。- オーバーライド:
- クラス
Multipart
のgetCount
- 戻り値:
- パーツ数
- 例外:
MessagingException
- 失敗- 関連事項:
Multipart.parts
getBodyPart
public BodyPart getBodyPart(int index) throws MessagingException
指定された BodyPart を取得します。BodyParts には 0 から始まる番号が付けられています。- オーバーライド:
- クラス
Multipart
のgetBodyPart
- パラメーター:
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 つ下に移動します。- オーバーライド:
- クラス
Multipart
のremoveBodyPart
- パラメーター:
part
- 削除する部分- 戻り値:
- パーツが削除された場合は true、そうでない場合は false
- 例外:
MessagingException
- そのようなパートが存在しない場合IllegalWriteException
- 基本となる実装が既存の値の変更をサポートしていない場合
removeBodyPart
public void removeBodyPart(int index) throws MessagingException
指定された場所(0 から始まる)のパーツを削除します。削除されたパーツの後のすべてのパーツを 1 つ下に移動します。- オーバーライド:
- クラス
Multipart
のremoveBodyPart
- パラメーター:
index
- 削除するパーツのインデックス- 例外:
IndexOutOfBoundsExceptionSE
- 指定されたインデックスが範囲外の場合。IllegalWriteException
- 基本となる実装が既存の値の変更をサポートしていない場合MessagingException
- その他の障害の場合
addBodyPart
public void addBodyPart(BodyPart part) throws MessagingException
マルチパートにパートを追加します。BodyPart が既存のパーツのリストに追加されます。- オーバーライド:
- クラス
Multipart
のaddBodyPart
- パラメーター:
part
- 追加するパーツ- 例外:
IllegalWriteException
- 基本となる実装が既存の値の変更をサポートしていない場合MessagingException
- その他の障害の場合
addBodyPart
public void addBodyPart(BodyPart part, int index) throws MessagingException
index
の位置に BodyPart を追加します。index
がリストの最後のものでない場合、後続の部分は上にシフトされます。index
が存在するパーツの数より大きい場合、BodyPart が末尾に追加されます。- オーバーライド:
- クラス
Multipart
のaddBodyPart
- パラメーター:
part
- 挿入する BodyPartindex
- パーツを挿入する場所- 例外:
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 パーツを出力します。- 次で指定:
- クラス
Multipart
のwriteTo
- パラメーター:
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