email.utils:その他のユーティリティ—Pythonドキュメント

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

email.utils :その他のユーティリティ

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



email.utils モジュールで提供される便利なユーティリティがいくつかあります。

email.utils.localtime(dt=None)

認識された日時オブジェクトとして現地時間を返します。 引数なしで呼び出された場合は、現在の時刻を返します。 それ以外の場合、 dt 引数は datetime インスタンスである必要があり、システムタイムゾーンデータベースに従ってローカルタイムゾーンに変換されます。 dt がナイーブである場合(つまり、dt.tzinfoNoneである場合)、現地時間であると見なされます。 この場合、 isdst の値が正またはゼロの場合、localtimeは最初に、夏時間(たとえば、夏時間)が指定された時間に対して有効であるかどうかを推定します。時間。 isdst の値が負の場合、localtimeは、指定された時間に夏時間が有効であるかどうかを判断しようとします。

バージョン3.3の新機能。

email.utils.make_msgid(idstring=None, domain=None)

RFC 2822 準拠の Message-ID ヘッダーに適した文字列を返します。 オプションの idstring は、指定されている場合、メッセージIDの一意性を強化するために使用される文字列です。 オプションの domain が指定されている場合、「@」の後のmsgidの部分を提供します。 デフォルトはローカルホスト名です。 通常、このデフォルトをオーバーライドする必要はありませんが、複数のホスト間で一貫したドメイン名を使用する分散システムを構築する場合など、特定の場合に役立つことがあります。

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

残りの機能は、レガシー(Compat32)電子メールAPIの一部です。 これらが提供する解析とフォーマットは、新しいAPIのヘッダー解析機構によって自動的に行われるため、これらを新しいAPIで直接使用する必要はありません。

email.utils.quote(str)
str のバックスラッシュが2つのバックスラッシュに置き換えられ、二重引用符がバックスラッシュ-二重引用符に置き換えられた新しい文字列を返します。
email.utils.unquote(str)
引用符で囲まれていないバージョンの str である新しい文字列を返します。 str が終了し、二重引用符で始まる場合、それらは削除されます。 同様に、 str が山かっこで終わり、角かっこで始まる場合、それらは削除されます。
email.utils.parseaddr(address)
アドレス( ToCc などのアドレスを含むフィールドの値である必要があります)を構成要素の実名および電子メールアドレスに解析します。 ]パーツ。 解析が失敗しない限り、その情報のタプルを返します。失敗した場合は、(, )の2タプルが返されます。
email.utils.formataddr(pair, charset='utf-8')

parseaddr()の逆で、これは(realname, email_address)の形式の2タプルを取り、 To または Cc に適した文字列値を返します。 ]ヘッダー。 pair の最初の要素がfalseの場合、2番目の要素は変更されずに返されます。

オプションの charset は、realnameに含まれる場合、realname RFC 2047 エンコーディングで使用される文字セットです。非ASCII文字。 str または Charset のインスタンスにすることができます。 デフォルトはutf-8です。

バージョン3.3で変更: charset オプションが追加されました。

email.utils.getaddresses(fieldvalues)

このメソッドは、parseaddr()によって返される形式の2タプルのリストを返します。 fieldvalues は、 Message.get_all によって返される可能性のあるヘッダーフィールド値のシーケンスです。 メッセージのすべての受信者を取得する簡単な例を次に示します。

from email.utils import getaddresses

tos = msg.get_all('to', [])
ccs = msg.get_all('cc', [])
resent_tos = msg.get_all('resent-to', [])
resent_ccs = msg.get_all('resent-cc', [])
all_recipients = getaddresses(tos + ccs + resent_tos + resent_ccs)
email.utils.parsedate(date)
RFC 2822 のルールに従って日付を解析しようとします。 ただし、一部のメーラーは指定された形式に従わないため、 parsedate()はそのような場合に正しく推測しようとします。 date は、"Mon, 20 Nov 1995 19:12:08 -0500"など、 RFC 2822 の日付を含む文字列です。 日付の解析に成功した場合、 parsedate()time.mktime()に直接渡すことができる9タプルを返します。 それ以外の場合は、Noneが返されます。 結果タプルのインデックス6、7、および8は使用できないことに注意してください。
email.utils.parsedate_tz(date)
parsedate()と同じ機能を実行しますが、Noneまたは10タプルのいずれかを返します。 最初の9つの要素は、 time.mktime()に直接渡すことができるタプルを構成し、10番目はUTC(グリニッジ標準時の公式用語)からの日付のタイムゾーンのオフセットです。 X301X] 1 。 入力文字列にタイムゾーンがない場合、返されるタプルの最後の要素は0であり、UTCを表します。 結果タプルのインデックス6、7、および8は使用できないことに注意してください。
email.utils.parsedate_to_datetime(date)

format_datetime()の逆。 parsedate()と同じ機能を実行しますが、成功すると datetime を返します。 入力日付のタイムゾーンが-0000の場合、datetimeは単純なdatetimeになり、日付がRFCに準拠している場合は、UTCで時刻を表しますが日付の送信元のメッセージの実際の送信元タイムゾーンは示されていません。 入力日付に他の有効なタイムゾーンオフセットがある場合、datetimeは対応するタイムゾーン tzinfo を持つdatetimeを認識します。

バージョン3.3の新機能。

email.utils.mktime_tz(tuple)
parsedate_tz()によって返される10タプルをUTCタイムスタンプ(エポックからの秒数)に変換します。 タプルのタイムゾーン項目がNoneの場合、現地時間を想定します。
email.utils.formatdate(timeval=None, localtime=False, usegmt=False)

RFC 2822 に従って日付文字列を返します。例:

Fri, 09 Nov 2001 01:08:47 -0000

オプションの timeval は、 time.gmtime()および time.localtime()で受け入れられる浮動小数点時間値です。それ以外の場合は、現在の時刻が使用されます。

オプションの localtime は、Trueの場合、 timeval を解釈し、夏時間を適切に考慮して、UTCではなくローカルタイムゾーンに関連する日付を返すフラグです。 デフォルトはFalseで、UTCが使用されることを意味します。

オプションの usegmt は、Trueの場合、数値-0000ではなく、タイムゾーンをASCII文字列GMTとして日付文字列を出力するフラグです。 これは、一部のプロトコル(HTTPなど)で必要です。 これは、 localtimeFalseの場合にのみ適用されます。 デフォルトはFalseです。

email.utils.format_datetime(dt, usegmt=False)

formatdateと同様ですが、入力は datetime インスタンスです。 ナイーブな日時の場合は、「ソースタイムゾーンに関する情報がないUTC」と見なされ、タイムゾーンには従来の-0000が使用されます。 datetimeを認識している場合は、数値のタイムゾーンオフセットが使用されます。 オフセットがゼロの認識タイムゾーンの場合、 usegmtTrueに設定できます。この場合、数値のタイムゾーンオフセットの代わりに文字列GMTが使用されます。 これは、標準に準拠したHTTP日付ヘッダーを生成する方法を提供します。

バージョン3.3の新機能。

email.utils.decode_rfc2231(s)
RFC 2231 に従って、文字列 s をデコードします。
email.utils.encode_rfc2231(s, charset=None, language=None)
RFC 2231 に従って、文字列 s をエンコードします。 オプションの charset および language (指定されている場合)は、使用する文字セット名と言語名です。 どちらも指定されていない場合、 s はそのまま返されます。 charset が指定されているが、 language が指定されていない場合、文字列は language の空の文字列を使用してエンコードされます。
email.utils.collapse_rfc2231_value(value, errors='replace', fallback_charset='us-ascii')

ヘッダーパラメータが RFC 2231 形式でエンコードされている場合、 Message.get_param は、文字セット、言語、および値を含む3タプルを返す場合があります。 colllapse_rfc2231_value()は、これをUnicode文字列に変換します。 オプションのエラーは、 strencode()メソッドのエラー引数に渡されます。 デフォルトは'replace'です。 オプションの fallback_charset は、 RFC 2231 ヘッダーの文字セットがPythonで認識されていない場合に使用する文字セットを指定します。 デフォルトは'us-ascii'です。

便宜上、 colllapse_rfc2231_value()に渡される value がタプルでない場合は、文字列である必要があり、引用符で囲まずに返されます。

email.utils.decode_params(params)
RFC 2231 に従ってパラメータリストをデコードします。 params は、(content-type, string-value)の形式の要素を含む2タプルのシーケンスです。

脚注

1
タイムゾーンオフセットの符号は、同じタイムゾーンのtime.timezone変数の符号と反対であることに注意してください。 後者の変数はPOSIX標準に従いますが、このモジュールは RFC 2822 に従います。