public class MimeMultipart extends Multipart
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 はボディパーツなしで作成されます。
修飾子と型 | フィールドと説明 |
---|---|
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 マルチパートプリアンブルテキスト。最初の境界線の前にあるテキスト。 |
contentType, parent, parts
コンストラクターと説明 |
---|
MimeMultipart() デフォルトコンストラクター。 |
MimeMultipart(BodyPart... parts) デフォルトの「混合」サブ型の MimeMultipart オブジェクトを、指定されたボディパーツで作成します。 |
MimeMultipart(DataSource ds) 指定された DataSource から 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(InputStreamSE is) InputStream から解析されたボディパーツを表す MimeBodyPart オブジェクトを作成して返します。 |
protected MimeBodyPart | createMimeBodyPart(InternetHeaders headers, byte[] content) 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 を構築します。 |
boolean | removeBodyPart(BodyPart part) マルチパートメッセージから指定されたパートを削除します。 |
void | removeBodyPart(int index) 指定された場所(0 から始まる)のパーツを削除します。 |
void | setPreamble(StringSE preamble) 最初の本文部分の前に含まれるプリアンブルテキストを設定します。 |
void | setSubType(StringSE subtype) サブ型を設定します。 |
protected void | updateHeaders() ヘッダーを更新します。 |
void | writeTo(OutputStreamSE os) すべてのパーツを反復処理し、境界で区切られた各 MIME パーツを出力します。 |
getContentType, getParent, setMultipartDataSource, setParent
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
protected DataSource ds
protected boolean parsed
protected boolean complete
protected StringSE preamble
protected boolean ignoreMissingEndBoundary
initializeProperties()
メソッドと parse メソッドで設定される "mail.mime.multipart.ignoremissingendboundary" プロパティに対応するフラグ。protected boolean ignoreMissingBoundaryParameter
initializeProperties()
メソッドと parse メソッドで設定される "mail.mime.multipart.ignoremissingboundaryparameter" プロパティに対応するフラグ。protected boolean ignoreExistingBoundaryParameter
initializeProperties()
メソッドと parse メソッドで設定される "mail.mime.multipart.ignoreexistingboundaryparameter" プロパティに対応するフラグ。protected boolean allowEmpty
initializeProperties()
メソッドと parse メソッドで設定される "mail.mime.multipart.allowempty" プロパティに対応するフラグ。public MimeMultipart()
contentType
フィールドの「境界」パラメーターとして設定されます。MimeBodyParts は後で追加されるかもしれません。
public MimeMultipart(StringSE subtype)
contentType
フィールドの「境界」パラメーターとして設定されます。initializeProperties()
メソッドを呼び出します。MimeBodyParts は後で追加されるかもしれません。
subtype
- MIME コンテンツサブ型 public MimeMultipart(BodyPart... parts) throws MessagingException
parts
- 体の部分 MessagingException
- 失敗 public MimeMultipart(StringSE subtype, BodyPart... parts) throws MessagingException
subtype
- MIME コンテンツサブ型 parts
- 体の部分 MessagingException
- 失敗 public MimeMultipart(DataSource ds) throws MessagingException
このコンストラクターは、指定された DataSource が MultipartDataSource オブジェクトである状況を特殊なケースとして処理します。この場合、このメソッドは、MultipartDataSource オブジェクトを取得するスーパークラス(つまり、マルチパート)コンストラクターを呼び出すだけです。
それ以外の場合、DataSource は MIME マルチパートバイトストリームを提供すると想定されます。parsed
フラグは false に設定されます。ボディパーツのデータが必要な場合、パーサーはこの DataSource のコンテンツ型から "boundary" パラメーターを抽出し、「プリアンブル」をスキップし、終了境界までバイトを読み取り、ストリームの各パーツに MimeBodyParts を作成します。
ds
- DataSource、MultipartDataSource にすることができます ParseException
- メッセージの解析に失敗した場合 MessagingException
- その他の障害の場合 protected void initializeProperties()
public void setSubType(StringSE subtype) throws MessagingException
subtype
- サブタイプ MessagingException
- 失敗 public int getCount() throws MessagingException
Multipart
の getCount
MessagingException
- 失敗 Multipart.parts
public BodyPart getBodyPart(int index) throws MessagingException
Multipart
の getBodyPart
index
- 目的の BodyPart のインデックス MessagingException
- そのような BodyPart が存在しない場合 public BodyPart getBodyPart(StringSE CID) throws MessagingException
CID
- 目的のパーツの ContentIDMessagingException
- 失敗 public boolean removeBodyPart(BodyPart part) throws MessagingException
Multipart
の removeBodyPart
part
- 削除する部分 MessagingException
- そのようなパートが存在しない場合 IllegalWriteException
- 基本となる実装が既存の値の変更をサポートしていない場合 public void removeBodyPart(int index) throws MessagingException
Multipart
の removeBodyPart
index
- 削除するパーツのインデックス IndexOutOfBoundsExceptionSE
- 指定されたインデックスが範囲外の場合。IllegalWriteException
- 基本となる実装が既存の値の変更をサポートしていない場合 MessagingException
- その他の障害の場合 public void addBodyPart(BodyPart part) throws MessagingException
Multipart
の addBodyPart
part
- 追加するパーツ IllegalWriteException
- 基本となる実装が既存の値の変更をサポートしていない場合 MessagingException
- その他の障害の場合 public void addBodyPart(BodyPart part, int index) throws MessagingException
index
の位置に BodyPart を追加します。index
がリストの最後のものでない場合、後続の部分は上にシフトされます。index
が存在するパーツの数より大きい場合、BodyPart が末尾に追加されます。Multipart
の addBodyPart
part
- 挿入する BodyPartindex
- パーツを挿入する場所 IllegalWriteException
- 基本となる実装が既存の値の変更をサポートしていない場合 MessagingException
- その他の障害の場合 public boolean isComplete() throws MessagingException
MessagingException
- 失敗 public StringSE getPreamble() throws MessagingException
MessagingException
- 失敗 public void setPreamble(StringSE preamble) throws MessagingException
preamble
- 前文 MessagingException
- 失敗 protected void updateHeaders() throws MessagingException
updateHeaders
メソッドを呼び出すだけです。境界パラメーターは、新しい空の MimeMultipart オブジェクトが作成されたときにすでに設定されていることに注意してください。
このマルチパートを含む Message オブジェクトで saveChanges
メソッドが呼び出されると、このメソッドが呼び出されます。これは通常、メッセージ送信プロセスの一部として行われますが、クライアントは何度でも呼び出すことができることに注意してください。特定の MimeMultipart サブクラスのヘッダー更新プロセスに負荷がかかる場合は、それ自体が内部状態が実際に変更されたかどうかを追跡し、必要な場合にのみヘッダー更新を実行する必要があります。
MessagingException
- 失敗 public void writeTo(OutputStreamSE os) throws IOExceptionSE, MessagingException
Multipart
の writeTo
os
- 書き込むストリーム IOExceptionSE
- IO 関連の例外が発生した場合 MessagingException
- その他の障害の場合 protected void parse() throws MessagingException
parsed
フラグは true に設定され、エントリ時に true の場合は何も行われません。このメソッドは、データが解析されたことを確認するために、ボディパーツのデータを必要とする他のすべてのメソッドによって呼び出されます。initializeProperties()
メソッドは、データを解析する前に呼び出されます。ParseException
- メッセージの解析に失敗した場合 MessagingException
- その他の障害の場合 protected InternetHeaders createInternetHeaders(InputStreamSE is) throws MessagingException
is
- ヘッダーを読み取る InputStreamMessagingException
- 失敗 protected MimeBodyPart createMimeBodyPart(InternetHeaders headers, byte[] content) throws MessagingException
headers
- ボディパーツのヘッダー content
- 体の部分の内容 MessagingException
- 失敗 protected MimeBodyPart createMimeBodyPart(InputStreamSE is) throws MessagingException
is
- ボディパーツを含む InputStreamMessagingException
- 失敗 Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.