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

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

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

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

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

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

The `email` package provides some convenient encoders in its `encoders` module. These encoders are actually used by the `MIMEAudio` and `MIMEImage` class constructors to provide default encodings. All encoder functions take exactly one argument, the message object to encode. They usually extract the payload, encode it, and reset the payload to this newly encoded value. They should also set the Content-Transfer-Encoding header as appropriate.

マルチパートメッセージにこれら関数を使うことは全く無意味です。それらは各々のサブパートごとに適用されるべきものです。メッセージがマルチパートのものを渡すと `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()` を使ってエンコードすると、データ中のタブ文字や空白文字もエンコードされます。