email.errors: 예외와 결함 클래스

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


email.errors 모듈에는 다음과 같은 예외 클래스가 정의되어 있습니다:

exception email.errors.MessageError

이것은 email 패키지가 발생시킬 수 있는 모든 예외의 베이스 클래스입니다. 표준 Exception 클래스에서 파생되며 추가 메서드를 정의하지 않습니다.

exception email.errors.MessageParseError

이것은 Parser 클래스에서 발생하는 예외의 베이스 클래스입니다. MessageError에서 파생됩니다. 이 클래스는 headerregistry에서 사용하는 구문 분석기에서도 내부적으로 사용됩니다.

exception email.errors.HeaderParseError

메시지의 RFC 5322 헤더를 구문 분석할 때 일부 에러 조건에서 발생합니다. 이 클래스는 MessageParseError에서 파생됩니다. 메서드가 호출될 때 콘텐츠 유형을 알 수 없으면, set_boundary() 메서드는 이 에러를 발생시킵니다. Header는 특정 base64 디코딩 에러와 내장된 헤더를 포함하는 것으로 보이는 헤더를 만들려고 할 때 (즉, 연장 줄(continuation line)이어야 할 곳에 선행 공백이 없고 헤더처럼 보이는 것이 있을 때) 이 에러를 발생시킬 수 있습니다.

exception email.errors.BoundaryError

폐지되었고 더는 사용되지 않습니다.

exception email.errors.MultipartConversionError

add_payload()를 사용하여 페이 로드가 Message 객체에 추가되었지만, 페이 로드가 이미 스칼라(scalar)이고 메시지의 Content-Type 메인 유형이 multipart도 아니고 누락되지도 않았으면 발생합니다. MultipartConversionErrorMessageError와 내장 TypeError에서 다중 상속됩니다.

Message.add_payload()는 폐지되었으므로, 실제로 이 예외는 거의 발생하지 않습니다. 그러나 MIMENonMultipart에서 파생된 클래스(예를 들어 MIMEImage)의 인스턴스에서 attach() 메서드를 호출하면 예외가 발생할 수도 있습니다.

exception email.errors.MessageDefect

This is the base class for all defects found when parsing email messages. It is derived from ValueError.

exception email.errors.HeaderDefect

This is the base class for all defects found when parsing email headers. It is derived from MessageDefect.

다음은 메시지를 구문 분석하는 동안 FeedParser가 찾을 수 있는 결함 목록입니다. 문제가 발견된 메시지에 결함이 추가됨에 유의하십시오. 그래서, 예를 들어, multipart/alternative 내에 중첩된 메시지에 잘못된 헤더가 있으면, 해당 중첩 메시지 객체가 결함을 갖게 되지만 포함하는 메시지는 그렇지 않습니다.

모든 결함 클래스는 email.errors.MessageDefect의 서브 클래스입니다.

  • NoBoundaryInMultipartDefect – 메시지가 멀티 파트라고 주장했지만, boundary 파라미터가 없습니다.

  • StartBoundaryNotFoundDefectContent-Type 헤더에서 주장하는 시작 경계를 찾지 못했습니다.

  • CloseBoundaryNotFoundDefect – 시작 경계가 발견되었지만, 해당하는 종료 경계가 발견되지 않았습니다.

    버전 3.3에 추가.

  • FirstHeaderLineIsContinuationDefect – 메시지의 첫 번째 헤더 줄에 연장 줄(continuation line)이 있습니다.

  • MisplacedEnvelopeHeaderDefect - 헤더 블록 중간에 “Unix From” 헤더가 있습니다.

  • MissingHeaderBodySeparatorDefect - 헤더를 구문 분석하는 중에 선행 공백이 없지만 ‘:’ 가 포함되지 않은 줄이 발견되었습니다. 그 줄이 본문의 첫 번째 줄을 나타내는 것으로 가정하여 구문 분석이 계속됩니다.

    버전 3.3에 추가.

  • MalformedHeaderDefect – 콜론이 없거나 다른 식으로 잘못된 헤더가 발견되었습니다.

    버전 3.3부터 폐지됨: 이 결함은 여러 파이썬 버전에서 사용되지 않았습니다.

  • MultipartInvariantViolationDefect – 메시지가 multipart라고 주장했지만, 서브 파트가 없습니다. 메시지에 이 결함이 있으면, 콘텐츠 유형이 multipart라고 주장하더라도 is_multipart() 메서드는 False를 반환할 수 있음에 유의하십시오.

  • InvalidBase64PaddingDefect – base64로 인코딩된 바이트열 블록을 디코딩할 때, 패딩이 올바르지 않습니다. 디코딩을 수행하기 위해 충분한 패딩이 추가되지만, 바이트열을 디코딩한 결과는 유효하지 않을 수 있습니다.

  • InvalidBase64CharactersDefect – base64로 인코딩된 바이트열 블록을 디코딩할 때, base64 알파벳 이외의 문자가 발견되었습니다. 문자는 무시되지만, 바이트열을 디코딩한 결과는 유효하지 않을 수 있습니다.

  • InvalidBase64LengthDefect – base64로 인코딩된 바이트열 블록을 디코딩할 때, 비 패딩 base64 문자 수가 유효하지 않습니다 (4의 배수보다 1이 큽니다). 인코딩된 블록은 그대로 유지됩니다.

  • InvalidDateDefect – When decoding an invalid or unparsable date field. The original value is kept as-is.