Анализ заголовка электронной почты Python get_all () - PullRequest
1 голос
/ 26 июля 2011

Я анализирую файлы почтовых ящиков с помощью Python и наткнулся на странный вид поведения при попытке получить все заголовки "To:" с get_all():

tos = message.get_all('to', [])
if tos:
    tos = getaddresses(tos)
    for to in tos:
        receiver = EmailInformant()
        receiver_email = to[1]

get_all(), получая все "to:"значения, которые разделяются запятыми, afaik.getaddresses затем разделяет отдельные получатели по имени и значению электронной почты.Для следующего заголовка «Кому:» он не работает так, как я ожидал:

To: example@test.de <example@test.de>

Здесь адрес электронной почты предоставляется как имя и значение электронной почты, но анализатор обрабатывает это как два отдельных «Кому».: "записи, выполняющие цикл for дважды.Это ошибка?

1 Ответ

0 голосов
/ 26 июля 2011

Парсинг электронных писем очень труден, так как есть несколько различных спецификаций, много поведений, которые определены или были плохо определены, и реализации, которые не соответствуют спецификациям. Многие из них конфликтуют в некотором роде.

Я знаю, что модуль электронной почты в стандартной библиотеке в настоящее время переписывается для Python 3.3, см. http://www.bitdance.com/blog/. Переписывание должно решить подобные проблемы; в настоящее время он доступен на pypi для Python 3.2, если у вас есть эта опция: http://pypi.python.org/pypi/email.

А пока попробуйте tos = set(getaddresses(tos)), чтобы устранить дубликаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...