## 7 エンコーダ

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

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

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

`encode_quopri`( | msg)

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

`encode_base64`( | msg)

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

`encode_7or8bit`( | msg)

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

`encode_noop`( | msg)

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

#### Footnotes

...quoted-printable 41
  注意: `encode_quopri()` を 使ってエンコードすると、データ中のタブ文字や空白文字も エンコードされます。