email.message:電子メールメッセージの表現—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/library/email.message
移動先:案内検索

email.message :電子メールメッセージを表します

ソースコード: :source: `Lib / email / message.py`



バージョン3.6の新機能: 1


email パッケージの中心的なクラスは、 email.message モジュールからインポートされた EmailMessage クラスです。 email オブジェクトモデルの基本クラスです。 EmailMessage は、ヘッダーフィールドの設定とクエリ、メッセージ本文へのアクセス、構造化メッセージの作成または変更のためのコア機能を提供します。

電子メールメッセージは、ヘッダーペイロードコンテンツとも呼ばれます)で構成されます。 ヘッダーは RFC 5322 または RFC 6532 スタイルのフィールド名と値です。フィールド名と値はコロンで区切られています。 コロンは、フィールド名またはフィールド値の一部ではありません。 ペイロードは、単純なテキストメッセージ、バイナリオブジェクト、またはそれぞれ独自のヘッダーセットと独自のペイロードを持つサブメッセージの構造化されたシーケンスの場合があります。 後者のタイプのペイロードは、 multipart / * または message / rfc822 などのMIMEタイプのメッセージによって示されます。

EmailMessage オブジェクトによって提供される概念モデルは、 RFC 5322 本体を表すペイロードと結合されたヘッダーの順序付きディクショナリのモデルです。メッセージの、サブEmailMessageオブジェクトのリストである可能性があります。 ヘッダーの名前と値にアクセスするための通常の辞書メソッドに加えて、ヘッダーから特殊な情報(MIMEコンテンツタイプなど)にアクセスするためのメソッド、ペイロードを操作するためのメソッド、メッセージのシリアル化されたバージョンを生成するためのメソッドがあります。オブジェクトツリー上を再帰的に歩くため。

EmailMessage 辞書のようなインターフェースは、ASCII値でなければならないヘッダー名によって索引付けされます。 ディクショナリの値は、いくつかの追加メソッドを含む文字列です。 ヘッダーは大文字と小文字を区別せずに保存および返されますが、フィールド名は大文字と小文字を区別せずに照合されます。 実際のdictとは異なり、キーには順序があり、キーが重複している可能性があります。 キーが重複しているヘッダーを操作するための追加のメソッドが提供されています。

payload は、単純なメッセージオブジェクトの場合は文字列またはバイトオブジェクト、 multipart / * [などのMIMEコンテナドキュメントの場合は EmailMessage オブジェクトのリスト)です。 X192X]および message / rfc822 メッセージオブジェクト。

class email.message.EmailMessage(policy=default)

policy が指定されている場合は、指定されているルールを使用して、メッセージの表現を更新およびシリアル化します。 policy が設定されていない場合は、 default ポリシーを使用します。これは、行末を除いて電子メールRFCのルールに従います(\r\nで義務付けられているRFCの代わりに、 Python標準\n行末)。 詳細については、ポリシーのドキュメントを参照してください。

as_string(unixfrom=False, maxheaderlen=None, policy=None)

平坦化されたメッセージ全体を文字列として返します。 オプションの unixfrom がtrueの場合、エンベロープヘッダーは返される文字列に含まれます。 unixfrom のデフォルトはFalseです。 基本メッセージクラス maxheaderlen との下位互換性のために受け入れられますが、デフォルトはNoneです。つまり、デフォルトでは、行の長さは [によって制御されます。ポリシーのX195X]。 policy 引数を使用して、メッセージインスタンスから取得したデフォルトのポリシーを上書きできます。 指定されたポリシージェネレーターに渡されるため、これを使用して、メソッドによって生成されるフォーマットの一部を制御できます。

文字列への変換を完了するためにデフォルトを入力する必要がある場合、メッセージをフラット化すると、 EmailMessage への変更がトリガーされる場合があります(たとえば、MIME境界が生成または変更される場合があります)。

この方法は便宜上提供されており、特に複数のメッセージを処理している場合は、アプリケーションでメッセージをシリアル化するための最も便利な方法ではない可能性があることに注意してください。 メッセージをシリアル化するためのより柔軟なAPIについては、 email.generator.Generator を参照してください。 utf8 がデフォルトのFalseの場合、この方法は「7ビットクリーン」としてシリアル化されたメッセージの生成に制限されることにも注意してください。

バージョン3.6での変更: maxheaderlen が指定されていない場合のデフォルトの動作が、デフォルトの0からデフォルトのポリシーの max_line_length の値に変更されました。

__str__()

as_string(policy=self.policy.clone(utf8=True))と同等です。 str(msg)がシリアル化されたメッセージを含む文字列を読み取り可能な形式で生成できるようにします。

バージョン3.4での変更:メソッドがutf8=Trueを使用するように変更されたため、 RFC 6531 のようなメッセージ表現が生成されます。 as_string()の直接エイリアス。

as_bytes(unixfrom=False, policy=None)

平坦化されたメッセージ全体をbytesオブジェクトとして返します。 オプションの unixfrom がtrueの場合、エンベロープヘッダーは返される文字列に含まれます。 unixfrom のデフォルトはFalseです。 policy 引数を使用して、メッセージインスタンスから取得したデフォルトのポリシーを上書きできます。 指定されたポリシーBytesGenerator に渡されるため、これを使用して、メソッドによって生成されるフォーマットの一部を制御できます。

文字列への変換を完了するためにデフォルトを入力する必要がある場合、メッセージをフラット化すると、 EmailMessage への変更がトリガーされる場合があります(たとえば、MIME境界が生成または変更される場合があります)。

この方法は便宜上提供されており、特に複数のメッセージを処理している場合は、アプリケーションでメッセージをシリアル化するための最も便利な方法ではない可能性があることに注意してください。 メッセージをシリアル化するためのより柔軟なAPIについては、 email.generator.BytesGenerator を参照してください。

__bytes__()

as_bytes()と同等です。 bytes(msg)がシリアル化されたメッセージを含むbytesオブジェクトを生成できるようにします。

is_multipart()

メッセージのペイロードがサブ EmailMessage オブジェクトのリストである場合は、Trueを返します。それ以外の場合は、Falseを返します。 is_multipart()Falseを返す場合、ペイロードは文字列オブジェクト(CTEでエンコードされたバイナリペイロードの場合があります)である必要があります。 is_multipart()Trueを返すことは、必ずしも「msg.get_content_maintype()== 'multipart'」がTrueを返すことを意味するわけではないことに注意してください。 たとえば、 EmailMessage のタイプがmessage/rfc822の場合、is_multipartTrueを返します。

set_unixfrom(unixfrom)

メッセージのエンベロープヘッダーを unixfrom に設定します。これは文字列である必要があります。 (このヘッダーの簡単な説明については、 mboxMessage を参照してください。)

get_unixfrom()

メッセージのエンベロープヘッダーを返します。 エンベロープヘッダーが設定されていない場合、デフォルトはNoneです。

次のメソッドは、メッセージのヘッダーにアクセスするためのマッピングのようなインターフェイスを実装します。 これらのメソッドと法線マッピングの間にはいくつかのセマンティックの違いがあることに注意してください(つまり、 辞書)インターフェース。 たとえば、辞書には重複するキーはありませんが、ここでは重複するメッセージヘッダーが存在する可能性があります。 また、辞書では、 keys()によって返されるキーの順序は保証されていませんが、 EmailMessage オブジェクトでは、ヘッダーは常に元のメッセージに表示された順序で返されます。または、後でメッセージに追加されたもの。 削除されてから再度追加されたヘッダーは、常にヘッダーリストの最後に追加されます。

これらのセマンティックの違いは意図的なものであり、最も一般的なユースケースでは利便性に偏っています。

すべての場合において、メッセージに存在するエンベロープヘッダーはマッピングインターフェイスに含まれないことに注意してください。

__len__()

重複を含むヘッダーの総数を返します。

__contains__(name)

メッセージオブジェクトに name という名前のフィールドがある場合は、Trueを返します。 マッチングは大文字と小文字を区別せずに行われ、 name には末尾のコロンは含まれません。 in演算子に使用されます。 例えば:

if 'message-id' in myMessage:
   print('Message-ID:', myMessage['message-id'])
__getitem__(name)

名前付きヘッダーフィールドの値を返します。 name には、コロンフィールド区切り文字は含まれていません。 ヘッダーがない場合は、Noneが返されます。 KeyError が発生することはありません。

名前付きフィールドがメッセージのヘッダーに複数回表示される場合、それらのフィールド値のどれが返されるかは正確には定義されていないことに注意してください。 get_all()メソッドを使用して、 name という名前の現存するすべてのヘッダーの値を取得します。

標準(compat32以外)のポリシーを使用すると、戻り値は email.headerregistry.BaseHeader のサブクラスのインスタンスになります。

__setitem__(name, val)

フィールド名名前および値 val のヘッダーをメッセージに追加します。 このフィールドは、メッセージの既存のヘッダーの最後に追加されます。

これは、同じ名前の既存のヘッダーを上書きまたは削除しないことに注意してください。 新しいヘッダーがフィールド名 name のメッセージに存在する唯一のヘッダーであることを確認する場合は、最初にフィールドを削除します。例:

del msg['subject']
msg['subject'] = 'Python roolz!'

policyが特定のヘッダーを一意であると定義している場合(標準ポリシーのように)、このメソッドは、既にヘッダーに値を割り当てようとすると、 ValueError を発生させる可能性があります。存在します。 この動作は一貫性を保つために意図されたものですが、将来、そのような割り当てで既存のヘッダーの自動削除を行うことを選択する可能性があるため、これに依存しないでください。

__delitem__(name)

メッセージのヘッダーから name という名前のフィールドのすべての出現箇所を削除します。 名前付きフィールドがヘッダーに存在しない場合、例外は発生しません。

keys()

すべてのメッセージのヘッダーフィールド名のリストを返します。

values()

すべてのメッセージのフィールド値のリストを返します。

items()

すべてのメッセージのフィールドヘッダーと値を含む2タプルのリストを返します。

get(name, failobj=None)

名前付きヘッダーフィールドの値を返します。 これは __ getitem __()と同じですが、名前付きヘッダーがない場合にオプションの failobj が返される点が異なります( failobj のデフォルトはNone)。

ヘッダーに関連するその他の便利なメソッドを次に示します。

get_all(name, failobj=None)

name という名前のフィールドのすべての値のリストを返します。 メッセージにそのような名前付きヘッダーがない場合は、 failobj が返されます(デフォルトはNone)。

add_header(_name, _value, **_params)

拡張ヘッダー設定。 このメソッドは __ setitem __()に似ていますが、追加のヘッダーパラメーターをキーワード引数として指定できる点が異なります。 _name は追加するヘッダーフィールドであり、 _value はヘッダーの primary 値です。

キーワード引数ディクショナリ _params の各項目について、キーがパラメータ名として使用され、アンダースコアがダッシュに変換されます(ダッシュはPython識別子では無効であるため)。 通常、パラメータは、値がNoneの場合、キーのみが追加されます。

値に非ASCII文字が含まれている場合は、値を(CHARSET, LANGUAGE, VALUE)の形式で3つのタプルとして指定することにより、文字セットと言語を明示的に制御できます。ここで、CHARSETは、文字セットに名前を付ける文字列です。値のエンコードに使用されるLANGUAGEは、通常、Noneまたは空の文字列(その他の可能性については RFC 2231 を参照)に設定できます。 X367X] は、非ASCIIコードポイントを含む文字列値です。 3つのタプルが渡されず、値に非ASCII文字が含まれている場合、utf-8CHARSETを使用して、 RFC 2231 形式で自動的にエンコードされます。 ]およびNoneLANGUAGE

次に例を示します。

msg.add_header('Content-Disposition', 'attachment', filename='bud.gif')

これにより、次のようなヘッダーが追加されます

Content-Disposition: attachment; filename="bud.gif"

非ASCII文字を使用した拡張インターフェースの例:

msg.add_header('Content-Disposition', 'attachment',
               filename=('iso-8859-1', '', 'Fußballer.ppt'))
replace_header(_name, _value)

ヘッダーを置き換えます。 _name に一致するメッセージで見つかった最初のヘッダーを置き換え、元のヘッダーのヘッダーの順序とフィールド名の大文字と小文字を保持します。 一致するヘッダーが見つからない場合は、 KeyError を発生させます。

get_content_type()

maintype / subtype の形式の小文字に強制変換されたメッセージのコンテンツタイプを返します。 メッセージに Content-Type ヘッダーがない場合は、 get_default_type()によって返される値を返します。 Content-Type ヘッダーが無効な場合は、text/plainを返します。

RFC 2045 によると、メッセージには常にデフォルトのタイプがあり、 get_content_type()は常に値を返します。 RFC 2045 は、メッセージのデフォルトタイプを text / plain と定義しています。ただし、 multipart / digest コンテナ内に表示される場合は、 message / rfc822 になります。 Content-Type ヘッダーに無効な型指定がある場合、 RFC 2045 は、デフォルトの型を text / plain にすることを義務付けています。)

get_content_maintype()

メッセージのメインコンテンツタイプを返します。 これは、 get_content_type()によって返される文字列の maintype 部分です。

get_content_subtype()

メッセージのサブコンテンツタイプを返します。 これは、 get_content_type()によって返される文字列のサブタイプの部分です。

get_default_type()

デフォルトのコンテンツタイプを返します。 マルチパート/ダイジェストコンテナーのサブパートであるメッセージを除いて、ほとんどのメッセージのデフォルトのコンテンツタイプはテキスト/プレーンです。 このようなサブパーツのデフォルトのコンテンツタイプは message / rfc822 です。

set_default_type(ctype)

デフォルトのコンテンツタイプを設定します。 ctypetext / plain または message / rfc822 のいずれかである必要がありますが、これは強制されません。 デフォルトのコンテンツタイプは Content-Type ヘッダーに格納されないため、 Content-Type ヘッダーが存在しない場合にのみget_content_typeメソッドの戻り値に影響します。メッセージで。

set_param(param, value, header='Content-Type', requote=True, charset=None, language=, replace=False)

Content-Type ヘッダーにパラメーターを設定します。 パラメータがすでにヘッダーに存在する場合は、その値を value に置き換えます。 headerContent-Type(デフォルト)で、ヘッダーがメッセージにまだ存在しない場合は、ヘッダーを追加し、その値を text / plain に設定して、新しいパラメータ値。 オプションの header は、 Content-Type の代替ヘッダーを指定します。

値に非ASCII文字が含まれている場合、文字セットと言語は、オプションの charset および language パラメーターを使用して明示的に指定できます。 オプションの language は、 RFC 2231 言語を指定し、デフォルトで空の文字列になります。 charsetlanguage はどちらも文字列である必要があります。 デフォルトでは、言語にはutf8 charset およびNoneが使用されます。

replaceFalse(デフォルト)の場合、ヘッダーはヘッダーのリストの最後に移動されます。 replaceTrueの場合、ヘッダーはその場で更新されます。

EmailMessage オブジェクトでの requote パラメーターの使用は非推奨です。

ヘッダーの既存のパラメーター値には、ヘッダー値のparams属性を介してアクセスできることに注意してください(たとえば、msg['Content-Type'].params['charset'])。

バージョン3.4で変更: replaceキーワードが追加されました。

del_param(param, header='content-type', requote=True)

Content-Type ヘッダーから指定されたパラメーターを完全に削除します。 ヘッダーは、パラメーターまたはその値なしでその場で書き直されます。 オプションの header は、 Content-Type の代替を指定します。

EmailMessage オブジェクトでの requote パラメーターの使用は非推奨です。

get_filename(failobj=None)

メッセージの Content-Disposition ヘッダーのfilenameパラメーターの値を返します。 ヘッダーにfilenameパラメーターがない場合、このメソッドは Content-Type ヘッダーでnameパラメーターを探すことにフォールバックします。 どちらも見つからない場合、またはヘッダーがない場合は、 failobj が返されます。 返される文字列は、 email.utils.unquote()に従って、常に引用符で囲まれていません。

get_boundary(failobj=None)

メッセージの Content-Type ヘッダーのboundaryパラメーターの値を返します。ヘッダーがないか、 [がない場合は、 failobj を返します。 X163X]パラメータ。 返される文字列は、 email.utils.unquote()に従って、常に引用符で囲まれていません。

set_boundary(boundary)

Content-Type ヘッダーのboundaryパラメーターを boundary に設定します。 set_boundary()は、必要に応じて常に boundary を引用します。 メッセージオブジェクトに Content-Type ヘッダーがない場合、 HeaderParseError が発生します。

set_boundary()[のため、このメソッドの使用は、古い Content-Type ヘッダーを削除し、 add_header()を介して新しい境界を持つ新しいヘッダーを追加することとは微妙に異なることに注意してください。 X195X]は、ヘッダーのリスト内の Content-Type ヘッダーの順序を保持します。

get_content_charset(failobj=None)

Content-Type ヘッダーのcharsetパラメーターを小文字に強制変換して返します。 Content-Type ヘッダーがない場合、またはそのヘッダーにcharsetパラメーターがない場合は、 failobj が返されます。

get_charsets(failobj=None)

メッセージ内の文字セット名を含むリストを返します。 メッセージが multipart の場合、リストにはペイロード内のサブパートごとに1つの要素が含まれます。それ以外の場合は、長さ1のリストになります。

リスト内の各項目は、表されたサブパーツの Content-Type ヘッダーのcharsetパラメーターの値である文字列になります。 サブパートに Content-Type ヘッダーがない場合、charsetパラメーターがない場合、または text メインMIMEタイプでない場合、返されるリストのその項目は次のようになります。 failobj

is_attachment()

Content-Disposition ヘッダーがあり、その(大文字と小文字を区別しない)値がattachmentの場合は、Trueを返し、それ以外の場合はFalseを返します。

バージョン3.4.2で変更: is_attachmentは、 is_multipart()との一貫性を保つために、プロパティではなくメソッドになりました。

get_content_disposition()

メッセージの Content-Disposition ヘッダーに小文字(パラメーターなし)がある場合はそれを返し、Noneを返します。 メッセージが RFC 2183 の後に続く場合、このメソッドに指定できる値は、インラインアタッチメント、またはNoneです。

バージョン3.5の新機能。

次の方法は、メッセージのコンテンツ(ペイロード)の問い合わせと操作に関連しています。

walk()

walk()メソッドは、メッセージオブジェクトツリーのすべての部分とサブ部分を深さ優先の走査順序で反復するために使用できる汎用ジェネレーターです。 通常、 walk()forループのイテレータとして使用します。 各反復は次のサブパートを返します。

マルチパートメッセージ構造のすべての部分のMIMEタイプを出力する例を次に示します。

>>> for part in msg.walk():
...     print(part.get_content_type())
multipart/report
text/plain
message/delivery-status
text/plain
text/plain
message/rfc822
text/plain

walkは、msg.get_content_maintype() == 'multipart'Falseを返す場合でも、 is_multipart()Trueを返すパーツのサブパーツを繰り返し処理します。 この例では、_structureデバッグヘルパー関数を使用してこれを確認できます。

>>> from email.iterators import _structure
>>> for part in msg.walk():
...     print(part.get_content_maintype() == 'multipart',
...           part.is_multipart())
True True
False False
False True
False False
False False
False True
False False
>>> _structure(msg)
multipart/report
    text/plain
    message/delivery-status
        text/plain
        text/plain
    message/rfc822
        text/plain

ここで、messageパーツはmultipartsではありませんが、サブパーツが含まれています。 is_multipart()Trueを返し、walkはサブパーツに下降します。

get_body(preferencelist=('related', 'html', 'plain'))

メッセージの「本文」となるのに最適な候補であるMIME部分を返します。

prioritylist は、セットrelatedhtml、およびplainの文字列のシーケンスである必要があり、コンテンツタイプの優先順位を示します。一部が返されました。

get_bodyメソッドが呼び出されたオブジェクトと一致する候補の検索を開始します。

relatedpreferencelist に含まれていない場合、(サブ)部分がプリファレンスと一致する場合、検出された関連のルート部分(またはルート部分のサブ部分)を候補と見なします。

multipart/relatedに遭遇した場合は、startパラメータを確認し、 Content-ID が一致するパーツが見つかった場合は、一致する候補を探すときにのみ考慮してください。 それ以外の場合は、multipart/relatedの最初の(デフォルトのルート)部分のみを考慮してください。

パーツに Content-Disposition ヘッダーがある場合、ヘッダーの値がinlineの場合にのみ、パーツが一致する候補と見なされます。

Preferenceslist のいずれの設定にも一致する候補がない場合は、Noneを返します。

注:(1)ほとんどのアプリケーションでは、実際に意味のある優先リストの組み合わせは、('plain',)('html', 'plain')、およびデフォルトの('related', 'html', 'plain')のみです。 (2)マッチングはget_bodyが呼び出されたオブジェクトから始まるため、multipart/relatedget_bodyを呼び出すと、 referencelist にデフォルト以外の値。 (3) Content-Type を指定しないメッセージ(またはメッセージ部分)または Content-Type ヘッダーが無効なメッセージ(またはメッセージ部分)は、タイプ [であるかのように扱われます。 X169X]。これにより、get_bodyが予期しない結果を返す場合があります。

iter_attachments()

候補の「本文」部分ではない、メッセージの直接のサブ部分すべてに対してイテレータを返します。 つまり、text/plaintext/htmlmultipart/related、またはmultipart/alternativeのそれぞれの最初の出現をスキップします(を介して添付ファイルとして明示的にマークされている場合を除く) Content-Disposition:attachment )、残りのすべてのパーツを返します。 multipart/relatedに直接適用する場合は、ルート部分(つまり、startパラメーターが指す部分、または存在しない場合は最初の部分)を除くすべての関連部分に対してイテレーターを返します。 startパラメーターまたはstartパラメーターが、どのパーツの Content-ID と一致しません)。 multipart/alternativeまたは非multipartに直接適用する場合は、空のイテレータを返します。

iter_parts()

メッセージの直接のサブパートすべてに対してイテレータを返します。multipart以外の場合は空になります。 ( walk()も参照してください。)

get_content(*args, content_manager=None, **kw)

content_managerget_content()メソッドを呼び出し、メッセージオブジェクトとしてselfを渡し、追加の引数として他の引数またはキーワードを渡します。 content_manager が指定されていない場合は、現在のポリシーで指定されているcontent_managerを使用してください。

set_content(*args, content_manager=None, **kw)

content_managerset_content()メソッドを呼び出し、メッセージオブジェクトとしてselfを渡し、追加の引数として他の引数またはキーワードを渡します。 content_manager が指定されていない場合は、現在のポリシーで指定されているcontent_managerを使用してください。

make_related(boundary=None)

multipartメッセージをmultipart/relatedメッセージに変換し、既存の Content- ヘッダーとペイロードをmultipartの(新しい)最初の部分に移動します。 。 boundary が指定されている場合は、マルチパートの境界文字列として使用します。それ以外の場合は、必要なとき(たとえば、メッセージがシリアル化されるとき)に境界が自動的に作成されるようにします。

make_alternative(boundary=None)

multipartまたはmultipart/relatedmultipart/alternativeに変換し、既存の Content- ヘッダーとペイロードを(新しい)最初の部分に移動します。 multipartboundary が指定されている場合は、マルチパートの境界文字列として使用します。それ以外の場合は、必要なとき(たとえば、メッセージがシリアル化されるとき)に境界が自動的に作成されるようにします。

make_mixed(boundary=None)

multipartmultipart/related、またはmultipart-alternativemultipart/mixedに変換し、既存のコンテンツ-ヘッダーとペイロードを移動しますmultipartの(新しい)最初の部分に。 boundary が指定されている場合は、マルチパートの境界文字列として使用します。それ以外の場合は、必要なとき(たとえば、メッセージがシリアル化されるとき)に境界が自動的に作成されるようにします。

add_related(*args, content_manager=None, **kw)

メッセージがmultipart/relatedの場合は、新しいメッセージオブジェクトを作成し、すべての引数をその set_content()メソッドに渡し、 attach()を[ X156X] 。 メッセージがmultipart以外の場合は、 make_related()を呼び出して、上記の手順を実行します。 メッセージが他のタイプのmultipartの場合は、 TypeError を発生させます。 content_manager が指定されていない場合は、現在のポリシーで指定されているcontent_managerを使用してください。 追加したパーツに Content-Disposition ヘッダーがない場合は、値inlineのヘッダーを追加します。

add_alternative(*args, content_manager=None, **kw)

メッセージがmultipart/alternativeの場合は、新しいメッセージオブジェクトを作成し、すべての引数をその set_content()メソッドに渡し、 attach()を[ X156X] 。 メッセージがmultipartまたはmultipart/related以外の場合は、 make_alternative()を呼び出して、上記の手順を実行します。 メッセージが他のタイプのmultipartの場合は、 TypeError を発生させます。 content_manager が指定されていない場合は、現在のポリシーで指定されているcontent_managerを使用してください。

add_attachment(*args, content_manager=None, **kw)

メッセージがmultipart/mixedの場合は、新しいメッセージオブジェクトを作成し、すべての引数をその set_content()メソッドに渡し、 attach()を[ X156X] 。 メッセージがmultipartmultipart/related、またはmultipart/alternative以外の場合は、 make_mixed()を呼び出して、上記の手順を実行します。 content_manager が指定されていない場合は、現在のポリシーで指定されているcontent_managerを使用してください。 追加したパーツに Content-Disposition ヘッダーがない場合は、値attachmentのヘッダーを追加します。 このメソッドは、適切なオプションをcontent_manager

clear()

ペイロードとすべてのヘッダーを削除します。

clear_content()

ペイロードとすべてのContent-ヘッダーを削除し、他のすべてのヘッダーはそのままにして元の順序のままにします。

EmailMessage オブジェクトには、次のインスタンス属性があります。

preamble

MIMEドキュメントの形式では、ヘッダーに続く空白行と最初のマルチパート境界文字列の間にテキストを含めることができます。 通常、このテキストは標準のMIMEアーマーの範囲外であるため、MIME対応のメールリーダーには表示されません。 ただし、メッセージの生のテキストを表示する場合、またはMIMEに対応していないリーダーでメッセージを表示する場合、このテキストが表示される可能性があります。

preamble 属性には、MIMEドキュメント用のこの主要な追加アーマーテキストが含まれています。 Parser は、ヘッダーの後、最初の境界文字列の前にテキストを検出すると、このテキストをメッセージの preamble 属性に割り当てます。 Generator がMIMEメッセージのプレーンテキスト表現を書き出していて、メッセージに preamble 属性があることがわかった場合、ヘッダーと最初の境界。 詳細については、 email.parser および email.generator を参照してください。

メッセージオブジェクトにプリアンブルがない場合、プリアンブル属性はNoneになることに注意してください。

epilogue

epilogue 属性は、 preamble 属性と同じように機能しますが、最後の境界とメッセージの終わりの間に表示されるテキストが含まれている点が異なります。 プリアンブルと同様に、エピローグテキストがない場合、この属性はNoneになります。

defects

defects 属性には、このメッセージの解析時に見つかったすべての問題のリストが含まれています。 考えられる解析の欠陥の詳細については、 email.errors を参照してください。

class email.message.MIMEPart(policy=default)
このクラスは、MIMEメッセージのサブパートを表します。 EmailMessage と同じですが、 set_content()が呼び出されたときに MIME-Version ヘッダーが追加されない点が異なります。これは、サブパーツが独自の[ X174X] MIME-Version ヘッダー。

脚注

1
もともとは3.4で暫定モジュールとして追加されました。 レガシーメッセージクラスのドキュメントが email.message.Messageに移動しました:compat32 API を使用して電子メールメッセージを表します。