email.utils
: Прочие утилиты¶
Исходный код: Lib/email/utils.py
В модуле email.utils
имеется несколько полезных утилит:
-
email.utils.
localtime
(dt=None)¶ Возвращает локальное время как осведомлённый объект datetime. Если вызывается без аргументов, возвращает текущее время. В противном случае аргумент dt должен быть
datetime
сущность и преобразован в часовой пояс локальная согласно базе данных часовых поясов системы. Если dt наивен (то естьdt.tzinfo
-None
), то предполагается, что он находится в локальная времени. В этом случае положительное или ноль значение для 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 ключевой аргумент.
Остальные функции являются частью устаревшего API электронной почты
(Compat32
). Нет никакой потребности непосредственно использовать их с новым
API, начиная с парсинг и форматирования, они обеспечивают, сделан
автоматически заголовком механизм парсинг нового API.
-
email.utils.
quote
(str)¶ Возвращает новая строка с обратной косой чертой в str заменена двумя обратной косой чертой, а двойные кавычки заменены обратной косой чертой.
-
email.utils.
unquote
(str)¶ Возвращает новый строка, который является unquoted версией str. Если str заканчивается и начинается с двойных кавычек, они раздеты прочь. Также, если str заканчивается и начинается с угловых кронштейнов, они раздеты прочь.
-
email.utils.
parseaddr
(address)¶ Адрес разбора - который должен быть значение некоторого содержащего адрес поля, такого как To или Cc - в его учредительный realname и части email address. Возвращает кортеж этой информации, если синтаксический анализ не завершается неуспешно, и в этом случае возвращается 2-кортеж
('', '')
.
-
email.utils.
formataddr
(pair, charset='utf-8')¶ Обратная
parseaddr()
, это принимает 2-кортеж формы(realname, email_address)
и возвращает строка значение, подходящий для заголовка To или Cc. Если первый элемент pair является ложным, то второй элемент является возвращенныйunmodified.Необязательный charset - это набор символ, который будет используемый в RFC 2047 кодировка
realname
, еслиrealname
содержит символы, отличные от символов ASCII. Может быть сущностьstr
илиCharset
. По умолчанию используется значениеutf-8
.Изменено в версии 3.3: Добавлен параметр charset.
-
email.utils.
getaddresses
(fieldvalues)¶ Этот метод возвращает список 2-кортежей формы возвращенныйby
parseaddr()
. fieldvalues представляет собой последовательность полей заголовка значения, как это может быть возвращенныйbyMessage.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 является строка, содержащим дату RFC 2822, например"Mon, 20 Nov 1995 19:12:08 -0500"
. Если это преуспевает в парсинг дата,parsedate()
возвращает с 9 кортежами, который может быть передан непосредственно кtime.mktime()
; в противном случаеNone
будет возвращен. Обратите внимание, что индексы 6, 7 и 8 результирующего кортежа не могут быть использованы.
-
email.utils.
parsedate_tz
(date)¶ Выполняет ту же функцию, что и
parsedate()
, но возвращает либоNone
, либо 10-кортеж; первые 9 элементов составляют кортеж, который может быть передан непосредственноtime.mktime()
, а десятый - смещение часового пояса даты от UTC (который является официальным сроком для времени по гринвичу) [1]. Если входной строка не имеет часового пояса, последний элемент кортежа возвращенныйis0
, который представляет UTC. Обратите внимание, что индексы 6, 7 и 8 результирующего кортежа не могут быть использованы.
-
email.utils.
parsedate_to_datetime
(date)¶ Обратная сторона
format_datetime()
. Выполняет ту же функцию, что иparsedate()
, но при успешном выполнении возвращаетdatetime
. Если введенная дата имеет часовой пояс-0000
, тоdatetime
будет наивнымdatetime
, и если дата соответствует RFC, она будет представлять время в UTC, но без указания фактического исходного часового пояса сообщения, из которого происходит дата. Если дата ввода имеет какое-либо другое допустимое смещение часового пояса, тоdatetime
будет представлять собой осведомленныйdatetime
с соответствующимtimezone
tzinfo
.Добавлено в версии 3.3.
-
email.utils.
mktime_tz
(tuple)¶ Поверните с 10 кортежами как возвращенныйby
parsedate_tz()
в метку времени 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
выводит дату строка с часовым поясом в виде ascii строкиGMT
, а не числового-0000
. Это необходимо для некоторых протоколов (например, HTTP). Это применимо только в том случае, если localtime являетсяFalse
. Значение по умолчанию -False
.
-
email.utils.
format_datetime
(dt, usegmt=False)¶ Как и
formatdate
, но входные данные являютсяdatetime
сущность. Если это наивный datetime, предполагается, что это «UTC без информации об исходном часовом поясе», и обычный-0000
является используемый для часового пояса. Если это осведомленныйdatetime
, то числовое смещение часового пояса равно используемый. Если это - осведомленный часовой пояс с нолем погашения, то usegmt может быть установлен вTrue
, в этом случае строкаGMT
- используемый вместо числового погашения часового пояса. Это позволяет создавать стандартные конформантные заголовки дат HTTP.Добавлено в версии 3.3.
-
email.utils.
encode_rfc2231
(s, charset=None, language=None)¶ Закодируйте строка s в соответствии с RFC 2231. Необязательные charset и language, если указано имя набора символ и имя языка для использования. Если ни то, ни другое не дано, s является возвращенный как есть. Если charset дан, но language не, строка - кодированный, используя пустой строка для language.
-
email.utils.
collapse_rfc2231_value
(value, errors='replace', fallback_charset='us-ascii')¶ Когда параметр заголовка - кодированный в формате RFC 2231,
Message.get_param
может возвращает с 3 кортежами содержащий набор символ, язык и значение.collapse_rfc2231_value()
превращает это в Юникод строка. Дополнительный errors передан к аргументу errors методаstr
encode()
; по умолчанию используется значение'replace'
. Необязательный fallback_charset указывает набор символ для использования, если он в заголовке RFC 2231 не известен Python; по умолчанию используется значение'us-ascii'
.Для удобства, если value прошел к
collapse_rfc2231_value()
, не кортеж, это должен быть строка, и это - возвращенный незаковыченное.
-
email.utils.
decode_params
(params)¶ Декодировать список параметров согласно RFC 2231. params - последовательность 2-кортежей, содержащих элементы вида
(content-type, string-value)
.
Сноски
[1] | Обратите внимание, что знак смещения часового пояса противоположен знаку
time.timezone переменная для того же часового пояса; последняя переменная
соответствует стандарту POSIX, в то время как данный модуль следует RFC 2822. |