# `email.encoders`: エンコーダー

ソースコード: Lib/email/encoders.py

このモジュールは、レガシーな (`Compat32`) email APIの一部です。新しいAPIでは、この機能は `set_content()` メソッドの*cte*パラメータによって提供されます。

このモジュールはPython3で非推奨になりました。 `MIMEText` クラスはクラスのインスタンス化中に渡された _subtype と _charset の値を使ってcontent typeとCTEヘッダを設定するので、ここで提供されている関数は明示的に呼び出すべきではありません。

この節の以降のテキストはモジュールの元々のドキュメントです。

何もないところから `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()` を使ってエンコードすると、データ中のタブ文字や空白文字もエンコードされます。