Détecter si un email est une "Notification d'état de livraison" et extraire des informations - Python

Je suis en utilisant le Python email module pour analyser les e-mails.

J'ai besoin d'être en mesure de dire si un email est une "Notification d'État de remise", savoir ce que l'état est, et d'extraire des informations sur l'email a échoué, par exemple. le Sujet.

L'objet que je reçois après l'analyse .parsestr(e-mail), c'est comme cela:

{'Content-Transfer-Encoding': 'quoted-printable',
 'Content-Type': 'text/plain; charset=ISO-8859-1',
 'Date': 'Mon, 14 Mar 2011 11:26:24 +0000',
 'Delivered-To': '[email protected]',
 'From': 'Mail Delivery Subsystem <[email protected]>',
 'MIME-Version': '1.0',
 'Message-ID': '<[email protected]>',
 'Received': 'by 10.142.13.8 with SMTP id 8cs63078wfm;\r\n        Mon, 14 Mar 2011 04:26:24 -0700 (PDT)',
 'Return-Path': '<>',
 'Subject': 'Delivery Status Notification (Failure)',
 'To': '[email protected]',
 'X-Failed-Recipients': '[email protected]'}

Tout d'abordcomment puis-je dire que c'est une source de données sans l'aide d'une expression régulière sur le sujet?

Deuxièmementcomment puis-je accéder au corps de l'emailet des informations telles que l'erreur a été renvoyée par le serveur de mail?

edit: travaillé en sortir, j'ai besoin d'utiliser .get_payload() pour obtenir le contenu du message.

La e-mail docs dire:

L'Analyseur de classe a aucune différence dans son interface publique. Il n'
quelques smarts
reconnaître message/livraison-type de statut
messages
, qu'il représente comme un
Instance de Message contenant séparé
Message sous-parties pour chaque bloc d'en-tête
dans la notification d'état de remise


Mise à jour:

En gros, j'ai besoin d'être en mesure fiable de détecter qu'un email est une source de données, et puis aussi pour en extraire le message d'origine afin que je puisse analyser que par email.Analyseur() et obtenir des informations à ce sujet.

source d'informationauteur Acorn