19.1.10. email.mime: メールと MIME オブジェクトを一から作成¶
ソースコード: Lib/email/mime/
This module is part of the legacy (Compat32) email API. Its functionality
is partially replaced by the contentmanager in the new API, but
in certain applications these classes may still be useful, even in non-legacy
code.
ふつう、メッセージオブジェクト構造はファイルまたは何がしかのテキストをパーザに通すことで得られます。パーザは与えられたテキストを解析し、基底となる root のメッセージオブジェクトを返します。しかし、完全なメッセージオブジェクト構造を何もないところから作成することもまた可能です。個別の Message を手で作成することさえできます。実際には、すでに存在するメッセージオブジェクト構造をとってきて、そこに新たな Message オブジェクトを追加したり、あるものを別のところへ移動させたりできます。これは MIME メッセージを切ったりおろしたりするために非常に便利なインターフェイスを提供します。
新しいメッセージオブジェクト構造は Message インスタンスを作成することにより作れます。ここに添付ファイルやその他適切なものをすべて手で加えてやればよいのです。MIME メッセージの場合、 email パッケージはこれらを簡単におこなえるようにするためにいくつかの便利なサブクラスを提供しています。
以下がそのサブクラスです:
-
class
email.mime.base.MIMEBase(_maintype, _subtype, *, policy=compat32, **_params)¶ モジュール:
email.mime.baseこれはすべての
Messageの MIME 用サブクラスの基底となるクラスです。とくにMIMEBaseのインスタンスを直接作成することは (可能ではありますが) ふつうはしないでしょう。MIMEBaseは単により特化された MIME 用サブクラスのための便宜的な基底クラスとして提供されています。_maintype は Content-Type の主形式 (maintype) であり (text や image など)、 _subtype は Content-Type の副形式 (subtype) です (plain や gif など)。 _params は各パラメータのキーと値を格納した辞書であり、これは直接
Message.add_headerに渡されます。If policy is specified, (defaults to the
compat32policy) it will be passed toMessage.MIMEBaseクラスはつねに (_maintype 、 _subtype 、および _params にもとづいた) Content-Type ヘッダと、 MIME-Version ヘッダ (必ず1.0に設定される) を追加します。バージョン 3.6 で変更: Added policy keyword-only parameter.
-
class
email.mime.nonmultipart.MIMENonMultipart¶ モジュール:
email.mime.nonmultipartMIMEBaseのサブクラスで、これは multipart 形式でない MIME メッセージのための中間的な基底クラスです。このクラスのおもな目的は、通常 multipart 形式のメッセージに対してのみ意味をなすattach()メソッドの使用をふせぐことです。もしattach()メソッドが呼ばれた場合、これはMultipartConversionError例外を発生します。
-
class
email.mime.multipart.MIMEMultipart(_subtype='mixed', boundary=None, _subparts=None, *, policy=compat32, **_params)¶ モジュール:
email.mime.multipartMIMEBaseのサブクラスで、これは multipart 形式の MIME メッセージのための中間的な基底クラスです。オプション引数 _subtype はデフォルトでは mixed になっていますが、そのメッセージの副形式 (subtype) を指定するのに使うことができます。メッセージオブジェクトには multipart/_subtype という値をもつ Content-Type ヘッダとともに、 MIME-Version ヘッダが追加されるでしょう。オプション引数 boundary は multipart の境界文字列です。これが
Noneの場合 (デフォルト)、境界は必要に応じて計算されます(例えばメッセージがシリアライズされるときなど)。_subparts はそのペイロードの subpart の初期値からなるシーケンスです。このシーケンスはリストに変換できるようになっている必要があります。新しい subpart はつねに
Message.attachメソッドを使ってそのメッセージに追加できるようになっています。Optional policy argument defaults to
compat32.Content-Type ヘッダに対する追加のパラメータはキーワード引数 _params を介して取得あるいは設定されます。これはキーワード辞書になっています。
バージョン 3.6 で変更: Added policy keyword-only parameter.
-
class
email.mime.application.MIMEApplication(_data, _subtype='octet-stream', _encoder=email.encoders.encode_base64, *, policy=compat32, **_params)¶ モジュール:
email.mime.applicationMIMENonMultipartのサブクラスであるMIMEApplicationクラスは MIME メッセージオブジェクトのメジャータイプ application を表します。 _data は生のバイト列が入った文字列です。オプション引数 _subtype は MIME のサブタイプを設定します。サブタイプのデフォルトは octet-stream です。オプション引数の _encoder は呼び出し可能なオブジェクト (関数など) で、データの転送に使う実際のエンコード処理を行います。この呼び出し可能なオブジェクトは引数を 1 つ取り、それは
MIMEApplicationのインスタンスです。ペイロードをエンコードされた形式に変更するためにget_payload()とset_payload()を使い、必要に応じて Content-Transfer-Encoding やその他のヘッダをメッセージオブジェクトに追加するべきです。デフォルトのエンコードは base64 です。組み込みのエンコーダの一覧はemail.encodersモジュールを見てください。Optional policy argument defaults to
compat32._params は基底クラスのコンストラクタにそのまま渡されます。
バージョン 3.6 で変更: Added policy keyword-only parameter.
-
class
email.mime.audio.MIMEAudio(_audiodata, _subtype=None, _encoder=email.encoders.encode_base64, *, policy=compat32, **_params)¶ モジュール:
email.mime.audioMIMEAudioクラスはMIMENonMultipartのサブクラスで、主形式 (maintype) が audio の MIME オブジェクトを作成するのに使われます。 _audiodata は実際の音声データを格納した文字列です。もしこのデータが標準の Python モジュールsndhdrによって認識できるものであれば、 Content-Type ヘッダの副形式 (subtype) は自動的に決定されます。そうでない場合はその画像の形式 (subtype) を _subtype で明示的に指定する必要があります。副形式が自動的に決定できず、 _subtype の指定もない場合は、TypeErrorが発生します。オプション引数の _encoder は呼び出し可能なオブジェクト (関数など) で、オーディオデータの転送に使う実際のエンコード処理を行います。この呼び出し可能なオブジェクトは引数を 1 つ取り、それは
MIMEAudioのインスタンスです。ペイロードをエンコードされた形式に変更するためにget_payload()とset_payload()を使い、必要に応じて Content-Transfer-Encoding やその他のヘッダをメッセージオブジェクトに追加するべきです。デフォルトのエンコードは base64 です。組み込みのエンコーダの一覧はemail.encodersモジュールを見てください。Optional policy argument defaults to
compat32._params は基底クラスのコンストラクタにそのまま渡されます。
バージョン 3.6 で変更: Added policy keyword-only parameter.
-
class
email.mime.image.MIMEImage(_imagedata, _subtype=None, _encoder=email.encoders.encode_base64, *, policy=compat32, **_params)¶ モジュール:
email.mime.imageMIMEImageクラスはMIMENonMultipartのサブクラスで、主形式 (maintype) が image の MIME オブジェクトを作成するのに使われます。 _imagedata は実際の画像データを格納した文字列です。もしこのデータが標準の Python モジュールimghdrによって認識できるものであれば、 Content-Type ヘッダの副形式 (subtype) は自動的に決定されます。そうでない場合はその画像の形式 (subtype) を _subtype で明示的に指定する必要があります。副形式が自動的に決定できず、 _subtype の指定もない場合は、TypeErrorが発生します。オプション引数の _encoder は呼び出し可能なオブジェクト (関数など) で、画像データの転送に使う実際のエンコード処理を行います。この呼び出し可能なオブジェクトは引数を 1 つ取り、それは
MIMEImageのインスタンスです。ペイロードをエンコードされた形式に変更するためにget_payload()とset_payload()を使い、必要に応じて Content-Transfer-Encoding やその他のヘッダをメッセージオブジェクトに追加するべきです。デフォルトのエンコードは base64 です。組み込みのエンコーダの一覧はemail.encodersモジュールを見てください。Optional policy argument defaults to
compat32._params は
MIMEBaseコンストラクタに直接渡されます。バージョン 3.6 で変更: Added policy keyword-only parameter.
-
class
email.mime.message.MIMEMessage(_msg, _subtype='rfc822', *, policy=compat32)¶ モジュール:
email.mime.messageMIMEMessageクラスはMIMENonMultipartのサブクラスで、主形式 (maintype) が message の MIME オブジェクトを作成するのに使われます。ペイロードとして使われるメッセージは _msg になります。これはMessageクラス (あるいはそのサブクラス) のインスタンスでなければいけません。そうでない場合、この関数はTypeErrorを発生します。オプション引数 _subtype はそのメッセージの副形式 (subtype) を設定します。デフォルトではこれは rfc822 になっています。
Optional policy argument defaults to
compat32.バージョン 3.6 で変更: Added policy keyword-only parameter.
-
class
email.mime.text.MIMEText(_text, _subtype='plain', _charset=None, *, policy=compat32)¶ モジュール:
email.mime.textMIMETextクラスはMIMENonMultipartのサブクラスで、主形式 (maintype) が text の MIME オブジェクトを作成するのに使われます。ペイロードの文字列は _text になります。 _subtype には副形式 (subtype) を指定し、デフォルトは plain です。 _charset はテキストの文字セットで、MIMENonMultipartコンストラクタに引数として渡されます。この値は、文字列がasciiコードポイントのみを含む場合us-ascii、それ以外はutf-8がデフォルトになっています。 _charset パラメータは、文字列とCharsetインスタンスの両方を受け付けます。Unless the _charset argument is explicitly set to
None, the MIMEText object created will have both a Content-Type header with acharsetparameter, and a Content-Transfer-Encoding header. This means that a subsequentset_payloadcall will not result in an encoded payload, even if a charset is passed in theset_payloadcommand. You can "reset" this behavior by deleting theContent-Transfer-Encodingheader, after which aset_payloadcall will automatically encode the new payload (and add a new Content-Transfer-Encoding header).Optional policy argument defaults to
compat32.バージョン 3.5 で変更: _charset は
Charsetインスタンスも受け取ります。バージョン 3.6 で変更: Added policy keyword-only parameter.
