проблема с парсингом электронной почты с python и несколькими полученными записями - PullRequest
0 голосов
/ 12 ноября 2010

Я пытаюсь разобрать письма с помощью python email.parser.Когда моя электронная почта содержит несколько полученных записей, похоже, что email.parser игнорирует эти записи.

Например, для ввода:

...
Received: from localhost (jalapeno [127.0.0.1])
    by jmason.org (Postfix) with ESMTP id 5C4E816F6D
    for <jm@localhost>; Sun,  6 Oct 2002 22:54:39 +0100 (IST)
Received: from jalapeno [127.0.0.1]
    by localhost with IMAP (fetchmail-5.9.0)
    for jm@localhost (single-drop); Sun, 06 Oct 2002 22:54:39 +0100 (IST)
...

вывод:

...
Received ::: from localhost (jalapeno [127.0.0.1])
    by jmason.org (Postfix) with ESMTP id 5C4E816F6D
    for <jm@localhost>; Sun,  6 Oct 2002 22:54:39 +0100 (IST)
Received ::: from localhost (jalapeno [127.0.0.1])
    by jmason.org (Postfix) with ESMTP id 5C4E816F6D
    for <jm@localhost>; Sun,  6 Oct 2002 22:54:39 +0100 (IST)
...

Я использую следующий код Python

import email
f = open('email.txt', 'r')
data = f.read()
e = email.message_from_string(data)
for i in e.keys():
    print i, ':::', e[i]

Это ошибка email.parser?

Вы предлагаете какую-либо другую библиотеку Python для разбора электронной почты?

1 Ответ

2 голосов
/ 12 ноября 2010

Документ python для email.__getitem__() говорит:

Обратите внимание, что если именованное поле появляется более одного раза в заголовках сообщения, какое именно из этих значений поля будетВозвращено не определено.Используйте метод get_all (), чтобы получить значения всех существующих именованных заголовков.

, поэтому используйте e.get_all (i) вместо e [i], чтобы получить все значения заголовка Received:.

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