полезная нагрузка электронного письма в строковом формате, python - PullRequest
1 голос
/ 18 декабря 2011

Я получил полезную нагрузку как экземпляр строки, используя метод get_payload(). Но я хочу, чтобы моя полезная нагрузка была так, чтобы я мог получить доступ к ней слово за словом Я пробовал несколько вещей, таких как as_string() method, flatten() method, get_charset() method, но каждый раз возникает какая-то проблема.

Я получил свою полезную нагрузку, используя следующий код

import email
from email import *
f=open('mail.txt','r')
obj=email.parser.Parser()
fp=obj.parse(f)
payload=fp.get_payload()

Ответы [ 2 ]

1 голос
/ 18 декабря 2011

Только что проверил ваш фрагмент с парой моих собственных необработанных писем. Работает нормально ...

get_payload () возвращает список или строку, поэтому вам необходимо сначала проверить

if isinstance(payload, list):
    for m in payload:
        print str(m).split()

else:
    print str(m).split()

Редактировать

Согласно нашему обсуждению, ваша проблема заключалась в том, что вы не проверяли is_multipart () для объекта fp, который на самом деле является экземпляром сообщения. Если fp.is_multipart () == True, тогда get_payload () вернет список экземпляров сообщения. В вашем случае, основываясь на вашем примере почтового сообщения, оно НЕ было составным, и на самом деле fp был тем объектом, который вас интересовал.

0 голосов
/ 20 декабря 2011

Я получил свою полезную нагрузку в виде строки, так как мой fp не был составным, если бы он мог быть составным, он бы возвратил список строк, поэтому теперь я могу просто использовать следующий код

payload=fp.get_payload()
abc=payload.split(" ")

это дает мне вывод следующим образом ['хорошо', 'день \ n http://72.167.116.186/image/bdfedx.php?iqunin=3D41\n\n',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','',' Sun ',' 18 ',' Dec ',' 2011 ', '10: 53: 43 \ n_ _ __ _ __ _ __ _ __ _ __ _ \ n "Она", "вытерла", "его", "высохла", "с',' мягкие ',' фланелевые ',' и ',' дали ',' его ',' некоторые ',' некоторые ',' чистые ',' сухие ',' одежда, = \ n ',' и ',' сделали',' его ',' очень ',' удобно ',' снова. '', '(c)', 'Lyrica', 'wa946758 \ n']

благодаря jdi :) ps не удалось опубликоватьэто как ответ вчера, так как было какое-то ограничение с точками

...