email.utils: 기타 유틸리티¶
소스 코드: Lib/email/utils.py
email.utils 모듈에서 제공하는 몇 가지 유용한 유틸리티가 있습니다:
- email.utils.localtime(dt=None)¶
로컬 시간을 aware datetime 객체로 반환합니다. 인자 없이 호출하면 현재 시간을 반환합니다. 그렇지 않으면 dt 인자는
datetime인스턴스여야 하며, 시스템 시간대 데이터베이스에 따라 로컬 시간대로 변환됩니다. dt 가 naive(즉,dt.tzinfo가None)인 경우 로컬 시간인 것으로 간주합니다.Added in version 3.3.
버전 3.12부터 사용 지원 중단(deprecated), 버전 3.14에서 제거됨: isdst 매개 변수.
- email.utils.make_msgid(idstring=None, domain=None)¶
RFC 2822 를 준수하는 Message-ID 헤더에 적합한 문자열을 반환합니다. 선택적인 idstring 이 주어지면 메시지 ID의 고유성을 강화하는 데 사용되는 문자열입니다. 선택적인 domain 이 주어지면 msgid의 ‘@’ 뒤에 오는 부분을 제공합니다. 기본값은 로컬 호스트 이름입니다. 일반적으로 이 기본값을 재정의할 필요는 없으나, 여러 호스트에서 일관된 도메인 이름을 사용하는 분산 시스템을 구축하는 경우 등 특정 상황에서는 유용할 수 있습니다.
버전 3.2에서 변경: domain 키워드가 추가되었습니다.
나머지 함수는 레거시 (Compat32) email API의 일부입니다. 이것들이 제공하는 구문 분석과 포매팅은 새 API의 헤더 구문 분석 장치가 자동으로 수행하므로, 새 API에서 이것들을 직접 사용할 필요는 없습니다.
- email.utils.quote(str)¶
str에 있는 역 슬래시를 두 개의 역 슬래시로 대체하고, 큰따옴표는 역 슬래시-큰따옴표로 대체한 새 문자열을 반환합니다.
- email.utils.unquote(str)¶
str의 unquote 된 버전인 새 문자열을 반환합니다. str가 큰따옴표로 끝나고 시작하면, 큰따옴표가 제거됩니다. 마찬가지로 str이 화살괄호(angle brackets)로 끝나고 시작하면, 제거됩니다.
- email.utils.parseaddr(address, *, strict=True)¶
address(To나 Cc와 같은 주소를 포함하는 필드의 값이어야 합니다)를 realname과 email 주소 구성 요소로 구문 분석합니다. 구문 분석에 실패하지 않는 한 해당 정보의 튜플을 반환합니다. 실패하면
('', '')의 2-튜플이 반환됩니다.strict 가 참(True)이면, 잘못된 형식을 가진 입력을 거부하는 엄격한 파서(parser)를 사용합니다.
버전 3.13에서 변경: strict 선택적 매개변수를 추가하고, 기본적으로 잘못된 형식을 가진 입력을 거부합니다.
- email.utils.formataddr(pair, charset='utf-8', *, strict=True)¶
parseaddr()의 역함수로,(realname, email_address)형태의 2-튜플을 받아 To 또는 Cc 헤더에 적합한 문자열 값을 반환합니다. pair 의 첫 번째 요소가 거짓이면 두 번째 요소가 수정되지 않은 채 반환됩니다.선택적 charset은
realname에 비 ASCII 문자가 포함되어있을 때realname의 RFC 2047 인코딩에 사용될 문자 집합입니다.str이나Charset의 인스턴스가 될 수 있습니다. 기본값은utf-8입니다.strict 가 True(기본값)인 경우, 이메일 주소에 허용되지 않는 CR 또는 LF를 포함하는 입력에 대해
ValueError를 발생시킵니다. 엄격하지 않은 입력을 허용하려면 strict 를False로 설정하십시오.버전 3.3에서 변경: charset 옵션이 추가되었습니다.
버전 3.16에서 변경: strict 매개변수가 추가되었습니다.
- email.utils.getaddresses(fieldvalues, *, strict=True)¶
이 함수는
parseaddr()에서 반환되는 형식의 2-튜플 리스트를 반환합니다. fieldvalues 는Message.get_all()에 의해 반환될 수 있는 헤더 필드 값의 시퀀스입니다.strict 가 참(True)이면, 잘못된 형식을 가진 입력을 거부하는 엄격한 파서(parser)를 사용합니다.
메시지의 모든 수신자를 가져오는 간단한 예제입니다:
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)
버전 3.13에서 변경: strict 선택적 매개변수를 추가하고, 기본적으로 잘못된 형식을 가진 입력을 거부합니다.
- email.utils.parsedate(date)¶
RFC 2822 Section 3.3 의 규칙에 따라 날짜를 구문 분석하려고 시도합니다. 그러나 일부 메일러는 명시된 형식을 따르지 않으므로,
parsedate()는 이러한 경우에 올바르게 추측을 시도합니다. date 는"Mon, 20 Nov 1995 19:12:08 -0500"과 같은 RFC 2822 날짜를 포함하는 문자열입니다. 날짜 구문 분석에 성공하면parsedate()는time.mktime()에 직접 전달할 수 있는 9-튜플을 반환하며, 실패할 경우None을 반환합니다. 결과 튜플의 인덱스 6, 7, 8은 사용할 수 없음에 유의하십시오.
- email.utils.parsedate_tz(date)¶
parsedate()와 같은 기능을 수행하지만,None이나 10-튜플을 반환합니다; 앞의 9개 요소는time.mktime()에 직접 전달할 수 있는 튜플을 구성하고, 열 번째 요소는 UTC(그리니치 표준 시의 공식 용어)로부터의 날짜의 시간대 오프셋입니다 [1]. 입력 문자열에 시간대가 없으면, 반환되는 튜플의 마지막 요소는0입니다, UTC를 나타냅니다. 결과 튜플의 인덱스 6, 7 및 8은 사용할 수 없음에 유의하십시오.
- email.utils.parsedate_to_datetime(date)¶
format_datetime()의 역함수입니다.parsedate()와 동일한 기능을 수행하지만, 성공 시datetime을 반환합니다. 만약 date 에 23을 초과하는 시간이나 -24에서 24 사이가 아닌 시간대 오프셋 등 잘못된 값이 포함된 경우ValueError가 발생합니다. 입력 날짜의 시간대가-0000이면datetime은 나이브(naive)datetime이 되며, 날짜가 RFC를 준수하는 경우 UTC 시간으로 표시되지만 해당 날짜가 포함된 메시지의 실제 소스 시간대는 표시되지 않습니다. 입력 날짜가 다른 유효한 시간대 오프셋을 가지는 경우,datetime은 해당tzinfo속성이timezone객체인 어웨어(aware)datetime이 됩니다.Added in version 3.3.
- email.utils.mktime_tz(tuple)¶
parsedate_tz()에 의해 반환된 10-튜플을 UTC 타임스탬프(Epoch 이후 초)로 바꿉니다. 튜플의 시간대 항목이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 대신 로컬 시간대에 따른 날짜를 반환하는 플래그입니다. 기본값은 UTC를 사용한다는 의미인False입니다.선택적인 usegmt 는
True일 때, 날짜 문자열의 시간대를 숫자-0000대신 ASCII 문자열GMT로 출력하는 플래그입니다. 이는 일부 프로토콜(HTTP 등)에서 필요합니다. 이 기능은 localtime 이False일 때만 적용됩니다. 기본값은False입니다.
- email.utils.format_datetime(dt, usegmt=False)¶
formatdate()와 유사하지만 입력이datetime인스턴스인 경우에 사용됩니다. 나이브(naive) datetime인 경우 “소스 시간대 정보가 없는 UTC”로 간주하며, 시간대로는 관례적인-0000이 사용됩니다. 어웨어(aware)datetime인 경우, 숫자 시간대 오프셋이 사용됩니다. 오프셋이 0인 어웨어 시간대인 경우 usegmt 를True로 설정할 수 있으며, 이 경우 숫자 시간대 오프셋 대신GMT문자열이 사용됩니다. 이는 표준을 준수하는 HTTP 날짜 헤더를 생성하는 방법을 제공합니다.Added in version 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 는str의encode()메서드의 errors 인자로 전달되며, 기본값은'replace'입니다. 선택적인 fallback_charset 은 RFC 2231 헤더의 문자 집합을 Python이 인식하지 못할 경우 사용할 문자 집합을 지정하며, 기본값은'us-ascii'입니다.편의상,
collapse_rfc2231_value()에 전달된 value가 튜플이 아니면, 문자열이어야 하고 unquote 되어 반환됩니다.
- email.utils.decode_params(params)¶
RFC 2231에 따라 매개 변수 리스트를 디코드합니다. params는
(content-type, string-value)형식의 요소를 포함하는 2-튜플의 시퀀스입니다.
각주