Escribo un cliente de correo electrónico basado en la web en Python y ha surgido una pregunta acerca de qué zona horaria debe representarse el encabezado "Fecha" de un correo electrónico como cuando se envía.¿Debe el encabezado "Fecha" del correo electrónico ser la hora local del remitente o UTC?
RFC 2822 estados en la sección 3.3 que:
La fecha y la hora del día debe expresar hora local.
Esto me parece ambiguo; la pregunta es la hora local de quién? El servidor de correo electrónico, o el remitente? Naturalmente, supongo que el remitente (que podría estar en cualquier zona horaria, y se puede cambiar en las preferencias de su cuenta). Se produjo una mayor confusión cuando miré la función email.utils.formatdate de Python que parece ofrecer solo dos alternativas: UTC o hora local (del servidor). Para mí no parece haber ninguna opción de especificar una zona horaria alternativa, ¿o me falta algo?
Pasar un timeval para formatear la fecha usando time.mktime(senders_tz_aware_now_datetime.timetuple())
da como resultado una cadena de fecha UTC, que se siente mal dado lo que dice el RFC arriba.
Entonces, ¿qué zona horaria debe tener "Fecha" y existe alguna función estándar para crear la cadena de fecha adecuada?
Eso no va a funcionar, estoy convirtiendo un objeto datetime con zona horaria utilizando el método timupuple, lo que significa que is_dst ya está configurado. Tampoco responde mi pregunta sobre cuál es la representación correcta de la fecha y hora. – kuhnza
Cambié de opinión, vaya de la manera más fácil y tendrá tiempo para tomar una cerveza por la noche. – sorin
Haha Me gusta tu estilo. Aún así, me gustaría tener una idea de cómo se maneja comúnmente porque me imagino que tiene implicaciones en una gama de clientes de correo electrónico de la que nunca he oído hablar, y mucho menos con el tiempo o los recursos para probar. – kuhnza