# `email.encoders`: 인코더

소스 코드: Lib/email/encoders.py

이 모듈은 레거시(`Compat32`) 이메일 API의 일부입니다. 새로운 API에서 기능은 `set_content()` 메서드의 cte 매개 변수에 의해 제공됩니다.

이 모듈은 파이썬 3에서 폐지되었습니다. `MIMEText` 클래스는 인스턴스 화 중에 전달된 _subtype과 _charset 값을 사용하여 콘텐츠 유형과 CTE 헤더를 설정하므로 여기에 제공된 함수를 명시적으로 호출하면 안 됩니다.

이 섹션의 나머지 텍스트는 모듈의 원본 설명서입니다.

`Message` 객체를 처음부터 만들 때, 종종 호환 메일 서버를 통한 전송을 위해 페이 로드를 인코딩해야 합니다. 바이너리 데이터가 포함된 image/*와 text/* 유형 메시지의 경우 특히 그렇습니다.

`email` 패키지는 `encoders` 모듈에서 편리한 인코더를 제공합니다. 이 인코더는 실제로 `MIMEAudio`와 `MIMEImage` 클래스 생성자가 기본 인코딩을 제공하는 데 사용됩니다. 모든 인코더 함수는 정확히 하나의 인자, 인코딩할 메시지 객체를 취합니다. 일반적으로 페이 로드를 추출하여, 인코딩한 다음, 페이 로드를 새로 인코딩된 값으로 재설정합니다. 또한 Content-Transfer-Encoding 헤더를 적절하게 설정합니다.

이러한 함수는 멀티 파트 메시지에는 의미가 없음에 유의하십시오. 대신 개별 서브 파트에 적용해야 하며, 유형이 멀티 파트인 메시지를 전달하면 `TypeError`가 발생합니다.

제공되는 인코딩 함수는 다음과 같습니다:

email.encoders.encode_quopri(msg)

  페이 로드를 인용 quoted-printable 형식으로 인코딩하고 Content-Transfer-Encoding 헤더를 `quoted-printable`로 설정합니다 [1]. 이것은 대부분의 페이 로드가 인쇄 가능한 일반 데이터이지만, 인쇄할 수 없는 문자가 몇 개 있을 때 사용하기에 적합한 인코딩입니다.

email.encoders.encode_base64(msg)

  페이 로드를 base64 형식으로 인코딩하고 Content-Transfer-Encoding 헤더를 `base64`로 설정합니다. 이것은 페이 로드가 대부분 인쇄할 수 없는 데이터일 때 사용하기에 좋은 인코딩입니다. quoted-printable보다 더 압축된 형식이기 때문입니다. base64 인코딩의 단점은 텍스트를 사람이 읽을 수 없도록 만든다는 것입니다.

email.encoders.encode_7or8bit(msg)

  이것은 실제로 메시지의 페이 로드를 수정하지는 않지만, 페이 로드 데이터를 기반으로, Content-Transfer-Encoding 헤더를 적절하게 `7bit`나 `8bit`로 설정합니다.

email.encoders.encode_noop(msg)

  이것은 아무것도 하지 않습니다. 심지어 Content-Transfer-Encoding 헤더도 설정하지 않습니다.

각주

[1]

`encode_quopri()`로 인코딩하면 데이터의 모든 탭과 공백 문자도 인코딩됨에 유의하십시오.