email — 이메일과 MIME 처리 패키지

email — 이메일과 MIME 처리 패키지

email 패키지는 이메일 메시지를 관리하는 라이브러리입니다. 특히 이메일 메시지를 SMTP(RFC 2821), NNTP 또는 다른 서버로 보내는 일은 하지 않도록 설계되었습니다. 그러한 기능은 smtplib 같은 모듈의 역할입니다. email 패키지는 가능한 한 RFC를 준수하도록 노력하며, RFC 5322RFC 6532, 그리고 RFC 2045, RFC 2046, RFC 2047, RFC 2183, RFC 2231 같은 MIME 관련 RFC를 지원합니다.

출처: Python documentation

본문

email 패키지의 전체 구조는 세 가지 주요 구성 요소와, 다른 구성 요소들의 동작을 제어하는 네 번째 구성 요소로 나눌 수 있습니다.

패키지의 핵심 구성 요소는 이메일 메시지를 나타내는 "객체 모델(object model)"입니다. 애플리케이션은 주로 email.message 서브모듈에 정의된 객체 모델 인터페이스를 통해 패키지와 상호작용합니다. 애플리케이션은 이 API로 기존 이메일에 대한 질문을 하거나, 새 이메일을 구성하거나, 같은 객체 모델 인터페이스를 사용하는 이메일 하위 구성 요소를 추가·제거할 수 있습니다. 이메일 메시지와 그 MIME 하위 구성 요소의 특성에 따라, 이메일 객체 모델은 모두 EmailMessage API를 제공하는 객체들의 트리 구조입니다.

나머지 두 주요 구성 요소는 parsergenerator입니다. parser는 이메일 메시지의 직렬화된 버전(바이트 스트림)을 받아 EmailMessage 객체의 트리로 변환합니다. generator는 EmailMessage를 받아 다시 직렬화된 바이트 스트림으로 바꿉니다. (parser와 generator는 텍스트 문자 스트림도 처리하지만, 이 사용법은 다양한 면에서 유효하지 않은 메시지가 되기 쉽기 때문에 권장되지 않습니다.)

제어 구성 요소는 policy 모듈입니다. 모든 EmailMessage, 모든 generator, 모든 parser에는 동작을 제어하는 연관 policy 객체가 있습니다. 보통 애플리케이션은 EmailMessage가 생성될 때만 정책을 지정하면 되지만, generator로 메시지를 직렬화할 때 정책을 바꿀 수 있습니다. 예를 들어 디스크에서 일반 이메일 메시지를 파싱했지만, 이메일 서버로 보낼 때는 표준 SMTP 설정으로 직렬화할 수 있습니다.

email 패키지는 다양한 관할 RFC의 세부 사항을 애플리케이션으로부터 숨기려고 노력합니다. 개념적으로 애플리케이션은 이메일 메시지를 유니코드 텍스트와 이진 첨부 파일의 구조화된 트리로 취급할 수 있어야 합니다. 다만 실제로는 MIME 메시지를 지배하는 규칙 중 적어도 일부, 특히 MIME "콘텐츠 타입"의 이름과 성격, 멀티파트 문서를 식별하는 방법을 알아야 하는 경우가 자주 있습니다.

email 패키지 문서의 구성:

  • email.message — 이메일 메시지 표현
  • email.parser — 이메일 메시지 파싱 (FeedParser API, Parser API)
  • email.generator — MIME 문서 생성
  • email.policy — 정책 객체
  • email.errors — 예외와 결함(Defect) 클래스
  • email.headerregistry — 사용자 정의 헤더 객체
  • email.contentmanager — MIME 콘텐츠 관리
  • email — 예제

레거시 API로는 Message 클래스로 시작하는 compat32 API가 있으며, 이메일 메시지가 어떻게 표현되는지의 세부 사항을 더 직접적으로 다룹니다. compat32 API는 RFC의 세부 사항을 애플리케이션으로부터 숨기지 않지만, 그 수준에서 동작해야 하는 애플리케이션에는 유용한 도구가 될 수 있습니다.

관련 모듈로는 SMTP 클라이언트 smtplib, POP 클라이언트 poplib, IMAP 클라이언트 imaplib, 디스크의 메시지 수집을 관리하는 mailbox가 있습니다.

더 알아보기 (Learn more)