email.message:電子メールメッセージの表現—Pythonドキュメント
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_multipart
はTrue
を返します。
- 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-8
のCHARSET
を使用して、 RFC 2231 形式で自動的にエンコードされます。 ]およびNone
のLANGUAGE
。次に例を示します。
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)
デフォルトのコンテンツタイプを設定します。 ctype は text / 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 に置き換えます。 header が
Content-Type
(デフォルト)で、ヘッダーがメッセージにまだ存在しない場合は、ヘッダーを追加し、その値を text / plain に設定して、新しいパラメータ値。 オプションの header は、 Content-Type の代替ヘッダーを指定します。値に非ASCII文字が含まれている場合、文字セットと言語は、オプションの charset および language パラメーターを使用して明示的に指定できます。 オプションの language は、 RFC 2231 言語を指定し、デフォルトで空の文字列になります。 charset と language はどちらも文字列である必要があります。 デフォルトでは、言語には
utf8
charset およびNone
が使用されます。replace が
False
(デフォルト)の場合、ヘッダーはヘッダーのリストの最後に移動されます。 replace がTrue
の場合、ヘッダーはその場で更新されます。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 は、セット
related
、html
、およびplain
の文字列のシーケンスである必要があり、コンテンツタイプの優先順位を示します。一部が返されました。get_body
メソッドが呼び出されたオブジェクトと一致する候補の検索を開始します。related
が preferencelist に含まれていない場合、(サブ)部分がプリファレンスと一致する場合、検出された関連のルート部分(またはルート部分のサブ部分)を候補と見なします。multipart/related
に遭遇した場合は、start
パラメータを確認し、 Content-ID が一致するパーツが見つかった場合は、一致する候補を探すときにのみ考慮してください。 それ以外の場合は、multipart/related
の最初の(デフォルトのルート)部分のみを考慮してください。パーツに Content-Disposition ヘッダーがある場合、ヘッダーの値が
inline
の場合にのみ、パーツが一致する候補と見なされます。Preferenceslist のいずれの設定にも一致する候補がない場合は、
None
を返します。注:(1)ほとんどのアプリケーションでは、実際に意味のある優先リストの組み合わせは、
('plain',)
、('html', 'plain')
、およびデフォルトの('related', 'html', 'plain')
のみです。 (2)マッチングはget_body
が呼び出されたオブジェクトから始まるため、multipart/related
でget_body
を呼び出すと、 referencelist にデフォルト以外の値。 (3) Content-Type を指定しないメッセージ(またはメッセージ部分)または Content-Type ヘッダーが無効なメッセージ(またはメッセージ部分)は、タイプ [であるかのように扱われます。 X169X]。これにより、get_body
が予期しない結果を返す場合があります。
- iter_attachments()
候補の「本文」部分ではない、メッセージの直接のサブ部分すべてに対してイテレータを返します。 つまり、
text/plain
、text/html
、multipart/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_manager の get_content()メソッドを呼び出し、メッセージオブジェクトとしてselfを渡し、追加の引数として他の引数またはキーワードを渡します。 content_manager が指定されていない場合は、現在のポリシーで指定されている
content_manager
を使用してください。
- set_content(*args, content_manager=None, **kw)
content_manager の set_content()メソッドを呼び出し、メッセージオブジェクトとしてselfを渡し、追加の引数として他の引数またはキーワードを渡します。 content_manager が指定されていない場合は、現在のポリシーで指定されている
content_manager
を使用してください。
- make_related(boundary=None)
非
multipart
メッセージをmultipart/related
メッセージに変換し、既存の Content- ヘッダーとペイロードをmultipart
の(新しい)最初の部分に移動します。 。 boundary が指定されている場合は、マルチパートの境界文字列として使用します。それ以外の場合は、必要なとき(たとえば、メッセージがシリアル化されるとき)に境界が自動的に作成されるようにします。
- make_alternative(boundary=None)
非
multipart
またはmultipart/related
をmultipart/alternative
に変換し、既存の Content- ヘッダーとペイロードを(新しい)最初の部分に移動します。multipart
。 boundary が指定されている場合は、マルチパートの境界文字列として使用します。それ以外の場合は、必要なとき(たとえば、メッセージがシリアル化されるとき)に境界が自動的に作成されるようにします。
- make_mixed(boundary=None)
非
multipart
、multipart/related
、またはmultipart-alternative
をmultipart/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] 。 メッセージがmultipart
、multipart/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 を使用して電子メールメッセージを表します。