Я хочу извлечь первый номер, найденный в теле письма.С помощью библиотеки электронной почты я извлек из тела письма только строку.Но проблема в том, что перед тем, как начинается настоящее текстовое тело, есть некоторая информация о кодировке и тому подобном (она содержит цифры).Как я могу пропустить их надежным способом, который не зависит от того, какой клиент создал электронную почту, и просто получить первый номер.
Если я наберу
match = re.search('\d+', string, re.MULTILINE)
, он получитпервое совпадение в информации о кодировке или чем-то другом, а не в реальном содержимом почты.
Хорошо.Я добавляю образец.Вот как это может выглядеть (я извлеку 123).Но я полагаю, что он может выглядеть иначе, отправленный другим клиентом.
--14dae93404410f62f404b2e65e10
Content-Type: text/plain; charset=ISO-8859-1
Junk 123 Junk
--14dae93404410f62f404b2e65e10
Content-Type: text/html; charset=ISO-8859-1
<p>Junk 123 Junk</p>
--14dae93404410f62f404b2e65e10--
Обновление: Теперь я застрял с итератором: - / Я действительно пытался.Но я не понимаю.Этот код:
msg = email.message_from_string(raw_message)
for part in email.iterators.typed_subpart_iterator(msg, 'text', 'plain'):
print part
выводит:
--14dae93404410f62f404b2e65e10
Content-Type: text/plain; charset=ISO-8859-1
Junk 123 Junk
--14dae93404410f62f404b2e65e10
Content-Type: text/html; charset=ISO-8859-1
<p>Junk 123 Junk</p>
--14dae93404410f62f404b2e65e10--
Почему он просто не выведет:
Junk 123 Junk
?