"email.errors" : exceptions et classes pour les anomalies
*********************************************************

**Code source :** Lib/email/errors.py

======================================================================

Les classes d'exception suivantes sont définies dans le module
"email.errors" :

exception email.errors.MessageError

   Exception de base, dont héritent toutes les exceptions du paquet
   "email". Cette classe hérite de la classe native "Exception" et ne
   définit aucune méthode additionnelle.

exception email.errors.MessageParseError

   Exception de base pour les exceptions levées par la classe
   "Parser". Elle hérite de "MessageError". Cette classe est aussi
   utilisée en interne par l'analyseur de "headerregistry".

exception email.errors.HeaderParseError

   Cette exception, dérivée de  "MessageParseError", est levée sous
   différentes conditions lors de l'analyse des en-têtes **RFC 5322**
   du message.  Lorsque la  méthode "set_boundary()" est invoquée,
   elle lève cette erreur si le type du contenu est inconnu.  La
   classe "Header" lève cette exception pour certains types d'erreurs
   provenant du décodage base64.  Elle la lève aussi  quand un en-tête
   est créé et qu'il semble contenir un en-tête imbriqué, c'est-à-dire
   que la ligne qui suit ressemble à un en-tête et ne commence pas par
   des caractères d'espacement.

exception email.errors.BoundaryError

   Obsolète, n'est plus utilisé.

exception email.errors.MultipartConversionError

   Cette exception est levée quand le contenu, que la méthode
   "add_payload()" essaie d'ajouter à l'objet "Message", est déjà un
   scalaire et que le type principal du message  *Content-Type* est
   manquant ou différent de  *multipart*.  "MultipartConversionError"
   hérite à la fois de  "MessageError" et de "TypeError".

   Comme la méthode "Message.add_payload()" est obsolète, cette
   exception est rarement utilisée. Néanmoins, elle peut être levée si
   la méthode  "attach()" est invoquée sur une instance de classe
   dérivée de "MIMENonMultipart" (p. ex. "MIMEImage").

exception email.errors.HeaderWriteError

   Raised when an error occurs when the "generator" outputs headers.

Voici la liste des anomalies que peut identifier "FeedParser" pendant
l'analyse des messages. Notez que les anomalies sont signalées à
l'endroit où elles sont détectées : par exemple, dans le cas d'une
malformation de l'en-tête d'un message imbriqué dans un message de
type  *multipart/alternative*, l'anomalie est signalée sur le message
imbriqué seulement.

Toutes les anomalies sont des sous-classes de
"email.errors.MessageDefect".

* "NoBoundaryInMultipartDefect" — Un message qui prétend être
  composite (*multipart* en anglais), mais qui ne contient pas de
  séparateur  *boundary*.

* "StartBoundaryNotFoundDefect" — Le message ne contient pas le
  séparateur de départ indiqué dans le *Content-Type*.

* "CloseBoundaryNotFoundDefect" — Le séparateur de départ a été
  trouvé, mais pas le séparateur de fin correspondant.

  Nouveau dans la version 3.3.

* "FirstHeaderLineIsContinuationDefect" — La première ligne de l'en-
  tête du message est une ligne de continuation.

* "MisplacedEnvelopeHeaderDefect" — Un en-tête *Unix From* est présent
  à l'intérieur d'un bloc d'en-tête.

* "MissingHeaderBodySeparatorDefect" — Une ligne d'en-tête ne contient
  pas de caractères d'espacement au début et aucun « : ». L'analyse
  continue en supposant qu'il s'agit donc de la première ligne du
  corps du message.

  Nouveau dans la version 3.3.

* "MalformedHeaderDefect" -- Un en-tête est mal formé ou il manque un
  « : ».

  Obsolète depuis la version 3.3: Cette anomalie est obsolète depuis
  plusieurs versions de Python.

* "MultipartInvariantViolationDefect" — Le message indique être de
  type *multipart*, mais aucune pièce jointe n'a été trouvée.  Notez
  que, dans ce cas, la méthode "is_multipart()" peut renvoyer "False"
  même si le type de contenu est *multipart*.

* "InvalidBase64PaddingDefect" — Remplissage incorrect d'un bloc
  d'octets encodés en base64.  Des caractères de remplissage ont été
  ajoutés pour permettre le décodage, mais le résultat du décodage
  peut être invalide.

* "InvalidBase64CharactersDefect" — Des caractères n'appartenant pas à
  l'alphabet base64 ont été rencontrés lors du décodage d'un bloc
  d'octets encodés en base64.  Les caractères ont été ignorés, mais le
  résultat du décodage peut être invalide.

* "InvalidBase64LengthDefect" — Le nombre de caractères (autres que de
  remplissage) d'un bloc d'octets encodés en base64 est invalide (1 de
  plus qu'un multiple de 4).  Le bloc encodé n'a pas été modifié.

* "InvalidDateDefect" — Le champ de date est invalide. La valeur est
  laissée telle-quelle.
