Я использую модуль 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': 'sender@gmail.com',
'From': 'Mail Delivery Subsystem <mailer-daemon@googlemail.com>',
'MIME-Version': '1.0',
'Message-ID': '<000e08jf90sd9f00e6f943f@google.com>',
'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': 'sender@gmail.com',
'X-Failed-Recipients': 'recipient@gmail.com'}
Во-первых , как мне сказать, что это DSN без использования регулярного выражения для предмета?
Во-вторых , как мне получить доступ к телу электронной почты и такой информации, как ошибка, возвращенная почтовым сервером?
edit: сработало Мне нужно использовать .get_payload()
для получения содержимого сообщения.
Документы электронной почты говорят:
Класс Parser не имеет различий в своем открытом интерфейсе. Это делает
иметь некоторые дополнительные умения
распознать тип сообщения / состояния доставки
сообщения , которые он представляет в виде
Экземпляр сообщения, содержащий отдельный
Подчасти сообщения для каждого блока заголовка
в уведомлении о состоянии доставки
Обновление:
По сути, мне нужно иметь возможность надежно определять, что электронная почта является DSN, а также извлекать исходное сообщение, чтобы я мог проанализировать его с помощью email.Parser () и получить информацию о нем.