18.1.7. "email.encoders": エンコーダ
************************************

何もないところから "Message" を作成するときしばしば必要になるのが、ペ
イロードをメールサーバに通すためにエンコードすることです。これはとくに
バイナリデータを含んだ *image/** や *text/** タイプのメッセージで必要
です。

"email" パッケージでは、 "encoders" モジュールにおいていくかの便宜的な
エンコーディングをサポートしています。実際にはこれらのエンコーダは
"MIMEAudio" および "MIMEImage" クラスのコンストラクタでデフォルトエン
コーダとして使われています。すべてのエンコーディング関数は、エンコード
するメッセージオブジェクトひとつだけを引数にとります。これらはふつうペ
イロードを取りだし、それをエンコードして、ペイロードをエンコードされた
ものにセットしなおします。これらはまた *Content-Transfer-Encoding* ヘ
ッダを適切な値に設定します。

マルチパートメッセージにこれら関数を使うことは全く無意味です。それらは
各々のサブパートごとに適用されるべきものです。メッセージがマルチパート
のものを渡すと "TypeError" が発生します。

提供されているエンコーディング関数は以下のとおりです:

email.encoders.encode_quopri(msg)

   ペイロードを quoted-printable 形式にエンコードし、 *Content-
   Transfer-Encoding* ヘッダを "quoted-printable" [1] に設定します。こ
   れはそのペイロードのほとんどが通常の印刷可能な文字からなっているが
   、印刷不可能な文字がすこしだけあるときのエンコード方法として適して
   います。

email.encoders.encode_base64(msg)

   ペイロードを base64 形式でエンコードし、 *Content-Transfer-
   Encoding* ヘッダを "base64" に変更します。これはペイロード中のデー
   タのほとんどが印刷不可能な文字である場合に適しています。 quoted-
   printable 形式よりも結果としてはコンパクトなサイズになるからです。
   base64 形式の欠点は、これが人間にはまったく読めないテキストになって
   しまうことです。

email.encoders.encode_7or8bit(msg)

   これは実際にはペイロードを変更はしませんが、ペイロードの形式に応じ
   て *Content-Transfer-Encoding* ヘッダを "7bit" あるいは "8bit" に適
   した形に設定します。

email.encoders.encode_noop(msg)

   これは何もしないエンコーダです。 *Content-Transfer-Encoding* ヘッダ
   を設定さえしません。

-[ 注記 ]-

[1] 注意: "encode_quopri()" を使ってエンコードすると、データ中のタ
    ブ文 字や空白文字もエンコードされます。
