### 3 追加事項

以下はテキスト解析の際に適用されるいくつかの規約です:

- ほとんどの 非multipart形式のメッセージは単一の文字列ペイロードをもつ 単一のメッセージオブジェクトとして解析されます。このオブジェクトは `is_multipart()` に対して `False` を返します。このオブジェクトに 対する `get_payload()` メソッドは文字列オブジェクトを返します。

- multipart形式のメッセージはすべてメッセージ内 コンポーネント (sub-message object) のリストとして解析されます。 外側のコンテナメッセージオブジェクトは `is_multipart()` に対して `True` を返し、このオブジェクトに対する `get_payload()` メソッドは `Message` subpart のリストを返します。

- message/* の Content-Type をもつほどんどのメッセージ (例: message/delivery-status や message/rfc822 など) も コンテナメッセージオブジェクトとして解析されますが、 ペイロードのリストの長さは 1 になります。このオブジェクトは `is_multipart()` メソッドに対して `True` を返し、 リスト内にあるひとつだけの要素がメッセージ内のコンポーネントオブジェクトになります。

- いくつかの標準的でないメッセージは、multipart の使い方に 統一がとれていない場合があります。このようなメッセージは Content-Type: ヘッダに multipart を指定しているものの、 その `is_multipart()` メソッドは `False` を返すことがあります。 もしこのようなメッセージが `FeedParser` によって解析されると、 その defects 属性のリスト中には `MultipartInvariantViolationDefect` クラスの インスタンスが現れます。詳しい情報については `email.errors` を 参照してください。