email.mime: 처음부터 이메일과 MIME 객체 만들기

소스 코드: Lib/email/mime/


이 모듈은 레거시 (Compat32) 이메일 API의 일부입니다. 새로운 API에서는 기능이 contentmanager로 부분적으로 대체되지만, 특정 응용 프로그램에서는 이 클래스들이 레거시 코드가 아닌 곳에서도 여전히 유용할 수 있습니다.

일반적으로, 파일이나 일부 텍스트를, 텍스트를 구문 분석하고 루트 메시지 객체를 반환하는 구문 분석기에 전달하여 메시지 객체 구조를 얻습니다. 그러나 처음부터 완전한 메시지 구조를 만들거나, 개별 Message 객체를 직접 만들 수도 있습니다. 실제로, 기존 구조를 가져와서 새로운 Message 객체를 추가하거나 이동시킬 수도 있습니다. 이렇게 하면 MIME 메시지를 잘게 자르고 재배치하는 매우 편리한 인터페이스가 만들어집니다.

Message 인스턴스를 만들고 첨부 파일과 모든 적절한 헤더를 수동으로 추가하여 새 객체 구조를 만들 수 있습니다. 그러나 MIME 메시지의 경우, email 패키지는 작업을 쉽게 하기 위해 편리한 서브 클래스를 제공합니다.

클래스는 다음과 같습니다:

class email.mime.base.MIMEBase(_maintype, _subtype, *, policy=compat32, **_params)

모듈: email.mime.base

이것은 Message의 모든 MIME 특정 서브 클래스의 베이스 클래스입니다. 일반적으로, 할 수는 있지만, MIMEBase의 인스턴스를 만들지는 않습니다. MIMEBase는 주로 더 구체적인 MIME 인식 서브 클래스를 위한 편리한 베이스 클래스로 제공됩니다.

_maintypeContent-Type 주 유형(예를 들어 textimage)이고, _subtypeContent-Type 부 유형(예를 들어 plain이나 gif)입니다. _params는 매개 변수 키/값 딕셔너리이며 Message.add_header로 직접 전달됩니다.

policy가 지정되면 (기본값은 compat32 정책입니다), Message로 전달됩니다.

MIMEBase 클래스는 항상 (_maintype, _subtype_params에 기반하는) Content-Type 헤더와 (항상 1.0으로 설정되는) MIME-Version 헤더를 추가합니다.

버전 3.6에서 변경: policy 키워드 전용 매개 변수를 추가했습니다.

class email.mime.nonmultipart.MIMENonMultipart

모듈: email.mime.nonmultipart

MIMEBase의 서브 클래스, multipart 가 아닌 MIME 메시지의 중간 베이스 클래스입니다. 이 클래스의 기본 목적은 multipart 메시지에만 적합한 attach() 메서드 사용을 방지하는 것입니다. attach()가 호출되면 MultipartConversionError 예외가 발생합니다.

class email.mime.multipart.MIMEMultipart(_subtype='mixed', boundary=None, _subparts=None, *, policy=compat32, **_params)

모듈: email.mime.multipart

MIMEBase의 서브 클래스, multipart 인 MIME 메시지의 중간 베이스 클래스입니다. 선택적 _subtype의 기본값은 mixed이지만, 메시지의 부 유형을 지정하는 데 사용할 수 있습니다. multipart/_subtypeContent-Type 헤더가 메시지 객체에 추가됩니다. MIME-Version 헤더도 추가됩니다.

선택적 boundary는 멀티 파트 경계 문자열입니다. None(기본값)이면, 경계는 필요할 때 (예를 들어 메시지가 직렬화될 때) 계산됩니다.

_subparts는 페이 로드의 초기 서브 파트 시퀀스입니다. 이 시퀀스를 리스트로 변환할 수 있어야 합니다. Message.attach 메서드를 사용하여 항상 메시지에 새 서브 파트를 첨부할 수 있습니다.

선택적 policy 인자의 기본값은 compat32입니다.

Content-Type 헤더에 대한 추가 매개 변수는 키워드 인자에서 취하거나, 키워드 딕셔너리인 _params 인자로 전달됩니다.

버전 3.6에서 변경: policy 키워드 전용 매개 변수를 추가했습니다.

class email.mime.application.MIMEApplication(_data, _subtype='octet-stream', _encoder=email.encoders.encode_base64, *, policy=compat32, **_params)

모듈: email.mime.application

MIMENonMultipart 의 서브 클래스, MIMEApplication 클래스는 주 유형 application의 MIME 메시지 객체를 나타내는 데 사용됩니다. _data는 원시 바이트 데이터를 포함하는 문자열입니다. 선택적 _subtype은 MIME 부 유형을 지정하고 기본값은 octet-stream입니다.

선택적 _encoder는 전송을 위해 데이터의 실제 인코딩을 수행할 콜러블(즉, 함수)입니다. 이 콜러블은 MIMEApplication 인스턴스인 하나의 인자를 취합니다. 페이 로드를 인코딩된 형식으로 변경하려면 get_payload()set_payload()를 사용해야 합니다. 또한, 필요에 따라 Content-Transfer-Encoding이나 기타 헤더를 메시지 객체에 추가해야 합니다. 기본 인코딩은 base64입니다. 내장 인코더의 목록은 email.encoders 모듈을 참조하십시오.

선택적 policy 인자의 기본값은 compat32입니다.

_params는 베이스 클래스 생성자로 바로 전달됩니다.

버전 3.6에서 변경: policy 키워드 전용 매개 변수를 추가했습니다.

class email.mime.audio.MIMEAudio(_audiodata, _subtype=None, _encoder=email.encoders.encode_base64, *, policy=compat32, **_params)

모듈: email.mime.audio

MIMENonMultipart 의 서브 클래스, MIMEAudio 클래스는 주 유형 audio의 MIME 메시지 객체를 만드는 데 사용됩니다. _audiodata는 원시 오디오 데이터를 포함하는 문자열입니다. 이 데이터를 표준 파이썬 모듈 sndhdr로 디코딩 할 수 있으면, 부 유형이 Content-Type 헤더에 자동으로 포함됩니다. 그렇지 않으면 _subtype 인자를 통해 audio 부 유형을 명시적으로 지정할 수 있습니다. 부 유형을 추측할 수 없고 _subtype이 제공되지 않으면, TypeError가 발생합니다.

선택적 _encoder는 전송을 위해 오디오 데이터의 실제 인코딩을 수행할 콜러블(즉, 함수)입니다. 이 콜러블은 MIMEAudio 인스턴스인 하나의 인자를 취합니다. 페이 로드를 인코딩된 형식으로 변경하려면 get_payload()set_payload()를 사용해야 합니다. 또한 필요에 따라 Content-Transfer-Encoding이나 기타 헤더를 메시지 객체에 추가해야 합니다. 기본 인코딩은 base64입니다. 내장 인코더의 목록은 email.encoders 모듈을 참조하십시오.

선택적 policy 인자의 기본값은 compat32입니다.

_params는 베이스 클래스 생성자로 바로 전달됩니다.

버전 3.6에서 변경: policy 키워드 전용 매개 변수를 추가했습니다.

class email.mime.image.MIMEImage(_imagedata, _subtype=None, _encoder=email.encoders.encode_base64, *, policy=compat32, **_params)

모듈: email.mime.image

MIMENonMultipart 의 서브 클래스, MIMEImage 클래스는 주 유형 image의 MIME 메시지 객체를 만드는 데 사용됩니다. _imagedata는 원시 이미지 데이터를 포함하는 문자열입니다. 이 데이터를 표준 파이썬 모듈 imghdr로 디코딩 할 수 있으면, 부 유형이 Content-Type 헤더에 자동으로 포함됩니다. 그렇지 않으면 _subtype 인자를 통해 image 부 유형을 명시적으로 지정할 수 있습니다. 부 유형을 추측할 수 없고 _subtype이 제공되지 않으면, TypeError가 발생합니다.

선택적 _encoder는 전송을 위해 이미지 데이터의 실제 인코딩을 수행할 콜러블(즉, 함수)입니다. 이 콜러블은 MIMEImage 인스턴스인 하나의 인자를 취합니다. 페이 로드를 인코딩된 형식으로 변경하려면 get_payload()set_payload()를 사용해야 합니다. 또한 필요에 따라 Content-Transfer-Encoding이나 기타 헤더를 메시지 객체에 추가해야 합니다. 기본 인코딩은 base64입니다. 내장 인코더의 목록은 email.encoders 모듈을 참조하십시오.

선택적 policy 인자의 기본값은 compat32입니다.

_paramsMIMEBase 생성자로 바로 전달됩니다.

버전 3.6에서 변경: policy 키워드 전용 매개 변수를 추가했습니다.

class email.mime.message.MIMEMessage(_msg, _subtype='rfc822', *, policy=compat32)

모듈: email.mime.message

MIMENonMultipart 의 서브 클래스, MIMEMessage 클래스는 주 유형 message의 MIME 객체를 만드는 데 사용됩니다. _msg는 페이 로드로 사용되며, Message 클래스(또는 그 서브 클래스)의 인스턴스여야 합니다, 그렇지 않으면 TypeError가 발생합니다.

선택적 _subtype은 메시지의 부 유형을 설정합니다; 기본값은 rfc822입니다.

선택적 policy 인자의 기본값은 compat32입니다.

버전 3.6에서 변경: policy 키워드 전용 매개 변수를 추가했습니다.

class email.mime.text.MIMEText(_text, _subtype='plain', _charset=None, *, policy=compat32)

모듈: email.mime.text

MIMENonMultipart 의 서브 클래스, MIMEText 클래스는 주 유형 text의 MIME 객체를 만드는 데 사용됩니다. _text는 페이 로드의 문자열입니다. _subtype은 부 유형이며 기본값은 plain입니다. _charset은 텍스트의 문자 집합이며 MIMENonMultipart 생성자에 인자로 전달됩니다; 기본값은 문자열에 ascii 코드 포인트만 포함되어 있으면 us-ascii이고, 그렇지 않으면 utf-8입니다. _charset 매개 변수는 문자열이나 Charset 인스턴스를 받아들입니다.

_charset 인자가 명시적으로 None으로 설정되어 있지 않은 한, 만들어진 MIMEText 객체에는 charset 매개 변수가 있는 Content-Type 헤더와 Content-Transfer-Encoding 헤더가 모두 있습니다. 이는 charset이 set_payload 명령으로 전달되더라도, 후속 set_payload 호출이 인코딩된 페이 로드를 만들지 않음을 의미합니다. Content-Transfer-Encoding 헤더를 삭제하여 이 동작을 “재설정”할 수 있으며, 그 후에 set_payload 호출은 자동으로 새 페이 로드를 인코딩합니다 (그리고 새 Content-Transfer-Encoding 헤더를 추가합니다).

선택적 policy 인자의 기본값은 compat32입니다.

버전 3.5에서 변경: _charsetCharset 인스턴스도 받아들입니다.

버전 3.6에서 변경: policy 키워드 전용 매개 변수를 추가했습니다.