# `email.iterators`: 이터레이터

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

메시지 객체 트리를 이터레이트 하는 것은 `Message.walk` 메서드를 사용하면 매우 쉽습니다. `email.iterators` 모듈은 메시지 객체 트리에 대한 유용한 고수준 이터레이션을 제공합니다.

email.iterators.body_line_iterator(msg, decode=False)

  msg의 모든 서브 파트에 있는 모든 페이 로드를 이터레이트 하여, 문자열 페이 로드를 한 줄씩 반환합니다. 모든 서브 파트 헤더를 건너뛰고, 파이썬 문자열이 아닌 페이 로드가 있는 서브 파트를 건너뜁니다. 이는 `readline()`을 사용하여 파일에서 메시지의 평평한(flat) 텍스트 표현을 읽는 것과 다소 유사하며, 모든 중간 헤더를 건너뜁니다.

  선택적 decode는 `Message.get_payload`로 전달됩니다.

email.iterators.typed_subpart_iterator(msg, maintype='text', subtype=None)

  msg의 모든 서브 파트를 이터레이트 하여, maintype과 subtype으로 지정된 MIME 유형과 일치하는 서브 파트만 반환합니다.

  subtype은 선택적임에 유의하십시오; 생략하면, 서브 파트 MIME 형식 일치는 메인 형식으로만 수행됩니다. maintype도 선택적입니다; 기본값은 text입니다.

  따라서, 기본적으로 `typed_subpart_iterator()`는 MIME 유형이 text/* 인 각 서브 파트를 반환합니다.

유용한 디버깅 도구로 다음 함수가 추가되었습니다. 이것은 패키지에서 지원되는 공용 인터페이스의 일부로 간주하지 않아야 합니다.

email.iterators._structure(msg, fp=None, level=0, include_default=False)

  메시지 객체 구조의 콘텐츠 유형을 들여쓰기하여 인쇄합니다. 예를 들면:

      >>> msg = email.message_from_file(somefile)
      >>> _structure(msg)
      multipart/mixed
          text/plain
          text/plain
          multipart/digest
              message/rfc822
                  text/plain
              message/rfc822
                  text/plain
              message/rfc822
                  text/plain
              message/rfc822
                  text/plain
              message/rfc822
                  text/plain
          text/plain

  선택적 fp는 출력을 인쇄할 파일류 객체입니다. 파이썬의 `print()` 함수에 적합해야 합니다. level은 내부적으로 사용됩니다. include_default가 참이면, 기본 유형도 인쇄합니다.