私は Python で Web ベースの電子メール クライアントを作成していますが、送信時に電子メールの「日付」ヘッダーをどのタイム ゾーンで表す必要があるかについて質問があります。
RFC 2822は、セクション 3.3 で次のように述べています。
日付と時刻は、現地時間を表現する必要があります。
これは私にはあいまいに思えます。問題は、誰の現地時間ですか? メールサーバー、または送信者?当然のことながら、私は送信者を想定します (送信者は任意のタイム ゾーンにいる可能性があり、アカウントの設定で変更できます)。Python のemail.utils.formatdate関数を調べたところ、さらに混乱が生じました。この関数は、UTC または (サーバーの) ローカル時間の 2 つの選択肢しか提供していないようです。私には、別のタイムゾーンを指定するオプションがないように見えますか、それとも何か不足していますか?
formatdate を使用して timeval を渡すtime.mktime(senders_tz_aware_now_datetime.timetuple())
と、UTC 日付文字列が生成されます。これは、RFC が上記で述べていることを考えると、間違っていると感じます。
では、「日付」はどのタイムゾーンであるべきで、適切な日付文字列を作成するための標準関数はありますか?