email.utils
: Miscellaneous utilities¶
Código fuente: Lib/email/utils.py
Existen varias funciones útiles proporcionadas en el módulo email.utils
:
- email.utils.localtime(dt=None)¶
Retorna la hora local como un objeto datetime consciente. Si se llama sin argumentos, retorna la hora actual. De lo contrario, el argumento dt debe ser una instancia de
datetime
, y se convierte a la zona horaria local según la base de datos de la zona horaria del sistema. Si dt no tiene información de zona horaria (es decir,dt.tzinfo
esNone
), se asume que está en la hora local. El parámetro isdst se ignora.Added in version 3.3.
Deprecated since version 3.12, will be removed in version 3.14: El parámetro isdst.
- email.utils.make_msgid(idstring=None, domain=None)¶
Retorna una cadena de caracteres apropiada para una cabecera Message-ID que cumpla con RFC 2822. Si se especifica un idstring opcional, es una cadena de caracteres utilizada para reforzar la unicidad del identificador del mensaje. Si se especifica un domain opcional provee la porción del msgid después de “@”. El predeterminado es el hostname local. Normalmente no es necesario especificar este valor, pero puede ser útil en algunos casos, como cuando se está construyendo un sistema distribuido que utiliza un nombre de dominio consistente a lo largo de varios ordenadores.
Distinto en la versión 3.2: Se añadió la palabra clave domain.
Las funciones que quedan son parte de la API de correo electrónico heredada (Compat32
) . No hay necesidad de utilizarlas directamente con el nuevo API, dado que el análisis sintáctico y formateo que proporcionan es realizado automáticamente por el mecanismo de análisis sintáctico de la nueva API.
- email.utils.quote(str)¶
Retorna una nueva cadena de caracteres con barras invertidas (
\
) en str reemplazado por dos barras invertidas, y comillas dobles reemplazadas por barra invertida seguido de comillas dobles.
- email.utils.unquote(str)¶
Retorna una nueva cadena de caracteres que es una versión unquoted de str. Si str comienza y termina con comillas dobles, éstas son eliminadas. De igual manera si str empieza y termina con comillas angulares (
<
y>
), éstas son eliminadas.
- email.utils.parseaddr(address, *, strict=True)¶
Interpreta address – la cual debe ser el valor de un campo que contenga un campo tal como To o Cc – para separarlo en sus componentes realname y email address. Retorna una tupla de información, a menos que la interpretación falle, en cuyo caso una 2-tupla de
('','')
es retornada.If strict is true, use a strict parser which rejects malformed inputs.
Distinto en la versión 3.13: Add strict optional parameter and reject malformed inputs by default.
- email.utils.formataddr(pair, charset='utf-8')¶
El inverso de
parseaddr()
, este toma una 2-tupla de la forma(realname,real, email_address)
y retorna una cadena de caracteres válido para una cabecera To o Cc. Si el primer elemento de pair es falso, entonces el segundo elemento es retornado sin modificación.El charset opcional es el conjunto de caracteres que será usado en la codificación RFC 2047 del
real_name
si elreal_name
contiene caracteres que no sean ASCII. Puede ser una instancia destr
oCharset
. El valor predeterminado esutf-8
.Distinto en la versión 3.3: Se añadió la opción charset.
- email.utils.getaddresses(fieldvalues, *, strict=True)¶
This method returns a list of 2-tuples of the form returned by
parseaddr()
. fieldvalues is a sequence of header field values as might be returned byMessage.get_all
.If strict is true, use a strict parser which rejects malformed inputs.
Here’s a simple example that gets all the recipients of a message:
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)
Distinto en la versión 3.13: Add strict optional parameter and reject malformed inputs by default.
- email.utils.parsedate(date)¶
Intenta interpretar una fecha de acuerdo a las reglas en RFC 2822. Sin embargo, algunos clientes de correo no siguen ese formato como está especificado, por lo cual
parsedate()
intenta adivinar correctamente en esos casos. date es una secuencia de caracteres que contiene una fecha RFC 2822 como"Mon, 20 Nov 1995 19:12:08 -0500"
. Si tiene éxito en interpretar la fecha,parsedate()
retorna una 9-tupla que puede ser pasada directamente atime.mktime()
; de lo contrarioNone
es retornado. Observar que los índices 6,7 y 8 de la tupla resultante no son utilizables.
- email.utils.parsedate_tz(date)¶
Realiza la misma función que
parsedate()
, pero retornaNone
o una 10-tupla; los primeros 9 elementos forman una tupla que puede ser pasada directamente atime.mktime()
, y el décimo es el desfase de la zona horaria de la fecha con respecto a UTC (que es el término oficial para Greenwich Mean Time) [1]. Si la cadena de caracteres de entrada no tiene zona horaria, el último elemento de la tupla retornada es0
, el cual representa UTC. Nótese que los índices 6, 7 y 8 de la tupla resultante no son utilizables.
- email.utils.parsedate_to_datetime(date)¶
Lo inverso de
format_datetime()
. Realiza la misma función queparsedate()
, pero en caso de éxito retorna undatetime
; de lo contrario,ValueError
se lanza si date contiene un valor no válido, como una hora superior a 23 o una diferencia de zona horaria no comprendida entre -24 y 24 horas. Si la fecha de entrada tiene una zona horaria de-0000
, eldatetime
será undatetime
ingenuo, y si la fecha se ajusta a las RFC, representará una hora en UTC pero sin indicación de la zona horaria de origen real del mensaje de donde proviene la fecha. . Si la fecha de entrada tiene cualquier otra compensación de zona horaria válida, eldatetime
será undatetime
consciente con el correspondientetimezone
tzinfo
.Added in version 3.3.
- email.utils.mktime_tz(tuple)¶
Cambia una 10-tupla, como la retornada por
parsedate_tz()
a una marca de tiempo UTC (segundos desde la Época). Si la zona horaria en la tupla esNone
, asume el tiempo local.
- email.utils.formatdate(timeval=None, localtime=False, usegmt=False)¶
Retorna una fecha como una cadena de caracteres de acuerdo a RFC 2822, por ejemplo:
Fri, 09 Nov 2001 01:08:47 -0000
Optional timeval if given is a floating-point time value as accepted by
time.gmtime()
andtime.localtime()
, otherwise the current time is used.localtime opcional, es una bandera que cuando es
True
, interpreta timeval y retorna una fecha relativa a la zona horaria local en lugar de UTC, tomando apropiadamente en cuenta el horario de verano. El valor predeterminado esFalse
con lo cual UTC es utilizado.usegmt opcional, es una bandera que cuando es
True
retorna una fecha como cadena de caracteres con la zona horaria como una cadena de caracteres asciiGMT
, en lugar de un numérico-0000
. Esto es necesario para algunos protocolos (como HTTP). Sólo aplica cuando localtime esFalse
. El valor predeterminado esFalse
.
- email.utils.format_datetime(dt, usegmt=False)¶
Similar a
formatdate
, pero la entrada es una instanciadatetime
. Si es un datetime naíf, se asume ser «UTC sin información sobre la zona horaria de origen», y el-0000
convencional es usado para la zona horaria. Si es undatetime
consciente entonces el desfase numérico de la zona horaria es utilizado. Si es una zona horaria consciente con un desfase cero, entonces usegmt puede serTrue
, en cuyo caso la cadena de caracteresGMT
es utilizada en lugar del desfase numérico de zona horaria. Esto provee una manera de generar cabeceras de fecha HTTP conforme estándares.Added in version 3.3.
- email.utils.encode_rfc2231(s, charset=None, language=None)¶
Codifica la cadena de caracteres s de acuerdo a RFC 2231. charset y language opcionales, si son dados es el conjunto de caracteres y nombre del lenguaje a utilizar. Si ninguno es dado, s es retornado sin modificar. Si charset es dado pero language no, la cadena de caracteres es codificada usando la cadena de caracteres vacía para language.
- email.utils.collapse_rfc2231_value(value, errors='replace', fallback_charset='us-ascii')¶
Cuando un parámetro de cabecera está codificado en formato RFC 2231,
Message.get_param
puede retornar una 3-tupla conteniendo el conjunto de caracteres, lenguaje y valor.collapse_rfc2231_value()
convierte esto en una cadena de caracteres unicode. El parámetro opcional errors es pasado al argumento errors del métodoencode()
destr
; de manera predeterminada recae en'replace'
. fallback_charset opcional, especifica el conjunto de caracteres a utilizar si el especificado en la cabecera RFC 2231 no es conocido por Python; su valor predeterminado es'us-ascii'
.Por conveniencia, si el value pasado a
collapse_rfc2231_value()
no es una tupla, debería ser una cadena de caracteres y se retorna sin citar.
- email.utils.decode_params(params)¶
Decodifica la lista de parámetros de acuerdo a RFC 2231. params es una secuencia de 2-tuplas conteniendo elementos de la forma
(content-type, string-value)
.
Notas a pie de página