Ich schreibe einen web-basierten E-Mail-Client in Python und es ist eine Frage entstanden, in welcher Zeitzone der "Date" -Header einer E-Mail wie beim Senden dargestellt werden soll.Sollte die E-Mail-Kopfzeile die Ortszeit oder die UTC-Zeit des Absenders sein?
RFC 2822 Zustände in Abschnitt 3.3, dass:
Das Datum und die Uhrzeit-Tag sollte Ortszeit auszudrücken.
Das scheint mir zweideutig; die Frage ist die Ortszeit von wem? Der E-Mail-Server oder der Absender? Natürlich würde ich den Absender annehmen (wer könnte in irgendeiner Zeitzone sein, und kann in ihren Kontoeinstellungen geändert werden). Weitere Verwirrung entstand, als ich Pythons email.utils.formatdate-Funktion betrachtete, die nur zwei Alternativen anzubieten scheint: UTC oder lokale Zeit (des Servers). Für mich scheint es keine Möglichkeit zu geben, eine alternative Zeitzone anzugeben, oder fehlt mir etwas?
Das Übergeben eines timeval an Formatdatum mit time.mktime(senders_tz_aware_now_datetime.timetuple())
führt zu einer UTC-Datumszeichenfolge, die sich falsch anfühlt, was der RFC oben sagt.
Also welche Zeitzone sollte "Date" sein, und existiert irgendeine Standardfunktion, um die passende Datumszeichenkette zu erstellen?
Das wird es nicht tun, ich konvertiere ein Zeitzone bewusste Datetime-Objekt mit dem Zeitplan Methode, was is_dst bereits festgelegt ist. Es beantwortet auch nicht meine Frage darüber, was die richtige Datum-Zeit-Darstellung ist. – kuhnza
Änderte meine Meinung, gehen Sie den einfachen Weg und Sie werden Zeit haben, ein Bier am Abend zu trinken. – sorin
Haha Ich mag deinen Stil. Trotzdem würde ich gerne eine Vorstellung davon bekommen, wie dies üblicherweise gehandhabt wird, weil ich mir vorstelle, dass es Auswirkungen auf eine Reihe von E-Mail-Clients hat, von denen ich noch nie gehört habe, geschweige denn die Zeit oder Ressourcen zum Testen. – kuhnza