Я использую модуль Python email
для анализа писем.
Мне нужно узнать, является ли электронное сообщение "Уведомление о статусе доставки", узнать, что такое статус, и извлечь информацию об ошибке, которая не удалась, например. Тема.
Объект, который я получаю после разбора с помощью .parsestr(email), выглядит следующим образом:
{'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]'}
Во-первых,, как я могу сказать, что это DSN без использования регулярного выражения по этому вопросу?
Во-вторых, как мне получить доступ к телу электронной почты, а также к такой информации, как ошибка, которая была возвращена почтовым сервером?
изменить:. Мне нужно использовать .get_payload()
для получения содержимого сообщения.
сообщения электронной почты говорят:
Класс Parser не имеет отличий в публичном интерфейсе. Он делает иметь некоторые дополнительные умения для распознавать тип сообщения/статус доставки сообщений, которые он представляет как Экземпляр сообщения, содержащий отдельные Подчасти для каждого блока заголовка в уведомлении о статусе доставки
Обновление:
В принципе, мне нужно иметь возможность надежно обнаруживать, что электронное письмо является DSN, а затем также извлекать исходное сообщение, чтобы я мог разобрать его с помощью email.Parser() и получить информацию об этом.