How can I get text of the body (payload) of an email?

Jeffrey Froman jeffrey at fro.man
Sat Oct 16 11:06:53 EDT 2004


andrew blah wrote:

> I want to get the text of the body - every character from the new line
> after the headers until the end of the message.
> 
> My objective is to do an SHA hash on the body text so the get_payload
> method isn't what I am after.

Funny, I recently undertook the same task. Here's my solution:

msg = email.message_from_string(foo)
x = sha.new()
for line in email.Iterators.body_line_iterator(msg):
    x.update(line)
hash = x.digest()

This very cool iterator returns every body line, but skips all the headers,
including the headers present in each sub-part of the email. If you only
want plain text parts, you might combine this iterator with
email.Iterators.typed_subpart_iterator().

Jeffrey



More information about the Python-list mailing list