Thomas Wouters | 49fd7fa | 2006-04-21 10:40:58 +0000 | [diff] [blame^] | 1 | \declaremodule{standard}{email.errors} |
Barry Warsaw | 5e63463 | 2001-09-26 05:23:47 +0000 | [diff] [blame] | 2 | \modulesynopsis{The exception classes used by the email package.} |
Barry Warsaw | 5e63463 | 2001-09-26 05:23:47 +0000 | [diff] [blame] | 3 | |
| 4 | The following exception classes are defined in the |
Thomas Wouters | 49fd7fa | 2006-04-21 10:40:58 +0000 | [diff] [blame^] | 5 | \module{email.errors} module: |
Barry Warsaw | 5e63463 | 2001-09-26 05:23:47 +0000 | [diff] [blame] | 6 | |
| 7 | \begin{excclassdesc}{MessageError}{} |
| 8 | This is the base class for all exceptions that the \module{email} |
| 9 | package can raise. It is derived from the standard |
| 10 | \exception{Exception} class and defines no additional methods. |
| 11 | \end{excclassdesc} |
| 12 | |
| 13 | \begin{excclassdesc}{MessageParseError}{} |
| 14 | This is the base class for exceptions thrown by the \class{Parser} |
| 15 | class. It is derived from \exception{MessageError}. |
| 16 | \end{excclassdesc} |
| 17 | |
| 18 | \begin{excclassdesc}{HeaderParseError}{} |
| 19 | Raised under some error conditions when parsing the \rfc{2822} headers of |
| 20 | a message, this class is derived from \exception{MessageParseError}. |
| 21 | It can be raised from the \method{Parser.parse()} or |
| 22 | \method{Parser.parsestr()} methods. |
| 23 | |
Barry Warsaw | 5b9da89 | 2002-10-01 01:05:52 +0000 | [diff] [blame] | 24 | Situations where it can be raised include finding an envelope |
Barry Warsaw | 5e63463 | 2001-09-26 05:23:47 +0000 | [diff] [blame] | 25 | header after the first \rfc{2822} header of the message, finding a |
| 26 | continuation line before the first \rfc{2822} header is found, or finding |
| 27 | a line in the headers which is neither a header or a continuation |
| 28 | line. |
| 29 | \end{excclassdesc} |
| 30 | |
| 31 | \begin{excclassdesc}{BoundaryError}{} |
| 32 | Raised under some error conditions when parsing the \rfc{2822} headers of |
| 33 | a message, this class is derived from \exception{MessageParseError}. |
| 34 | It can be raised from the \method{Parser.parse()} or |
| 35 | \method{Parser.parsestr()} methods. |
| 36 | |
| 37 | Situations where it can be raised include not being able to find the |
Barry Warsaw | 5b9da89 | 2002-10-01 01:05:52 +0000 | [diff] [blame] | 38 | starting or terminating boundary in a \mimetype{multipart/*} message |
| 39 | when strict parsing is used. |
Barry Warsaw | 5e63463 | 2001-09-26 05:23:47 +0000 | [diff] [blame] | 40 | \end{excclassdesc} |
| 41 | |
| 42 | \begin{excclassdesc}{MultipartConversionError}{} |
| 43 | Raised when a payload is added to a \class{Message} object using |
| 44 | \method{add_payload()}, but the payload is already a scalar and the |
Barry Warsaw | c5f8fe3 | 2001-09-26 22:21:52 +0000 | [diff] [blame] | 45 | message's \mailheader{Content-Type} main type is not either |
| 46 | \mimetype{multipart} or missing. \exception{MultipartConversionError} |
| 47 | multiply inherits from \exception{MessageError} and the built-in |
| 48 | \exception{TypeError}. |
Barry Warsaw | 5b9da89 | 2002-10-01 01:05:52 +0000 | [diff] [blame] | 49 | |
| 50 | Since \method{Message.add_payload()} is deprecated, this exception is |
| 51 | rarely raised in practice. However the exception may also be raised |
| 52 | if the \method{attach()} method is called on an instance of a class |
| 53 | derived from \class{MIMENonMultipart} (e.g. \class{MIMEImage}). |
Barry Warsaw | 5e63463 | 2001-09-26 05:23:47 +0000 | [diff] [blame] | 54 | \end{excclassdesc} |
Barry Warsaw | bb11386 | 2004-10-03 03:16:19 +0000 | [diff] [blame] | 55 | |
| 56 | Here's the list of the defects that the \class{FeedParser} can find while |
| 57 | parsing messages. Note that the defects are added to the message where the |
| 58 | problem was found, so for example, if a message nested inside a |
| 59 | \mimetype{multipart/alternative} had a malformed header, that nested message |
| 60 | object would have a defect, but the containing messages would not. |
| 61 | |
Thomas Wouters | 49fd7fa | 2006-04-21 10:40:58 +0000 | [diff] [blame^] | 62 | All defect classes are subclassed from \class{email.errors.MessageDefect}, but |
Barry Warsaw | bb11386 | 2004-10-03 03:16:19 +0000 | [diff] [blame] | 63 | this class is \emph{not} an exception! |
| 64 | |
| 65 | \versionadded[All the defect classes were added]{2.4} |
| 66 | |
| 67 | \begin{itemize} |
| 68 | \item \class{NoBoundaryInMultipartDefect} -- A message claimed to be a |
| 69 | multipart, but had no \mimetype{boundary} parameter. |
| 70 | |
| 71 | \item \class{StartBoundaryNotFoundDefect} -- The start boundary claimed in the |
| 72 | \mailheader{Content-Type} header was never found. |
| 73 | |
| 74 | \item \class{FirstHeaderLineIsContinuationDefect} -- The message had a |
| 75 | continuation line as its first header line. |
| 76 | |
| 77 | \item \class{MisplacedEnvelopeHeaderDefect} - A ``Unix From'' header was found |
| 78 | in the middle of a header block. |
| 79 | |
| 80 | \item \class{MalformedHeaderDefect} -- A header was found that was missing a |
| 81 | colon, or was otherwise malformed. |
| 82 | |
| 83 | \item \class{MultipartInvariantViolationDefect} -- A message claimed to be a |
| 84 | \mimetype{multipart}, but no subparts were found. Note that when a |
| 85 | message has this defect, its \method{is_multipart()} method may return |
| 86 | false even though its content type claims to be \mimetype{multipart}. |
| 87 | \end{itemize} |