[Python] Python and parsing email

Rob Hudson rob at euglug.net
Tue Apr 4 14:57:18 PDT 2006


I dislike finding the answer so soon after writing an email.  :)

I did this repeatedly to follow what my written script did:

p = part.next()
p.get_content_maintype()

I suppose that's what the for part in ... did for me.

I also discovered that I can simply loop over the msg._headers list to 
get the From header, but the rest was instructional for me.  :)

-Rob

Rob Hudson wrote:
> I'm using the email built-in to parse email messages looking for 
> attachments.  I've got it working but I wanted to continue and make this 
> thing smarter.
> 
> I've got this basic structure:
> 
>  61     for part in msg.walk():
>  62         # multipart/* are just containers
>  63         if part.get_content_maintype() == 'multipart':
>  64             continue
>  65         filename = part.get_filename()
>  66         # If we have a filename, we have an attachment
>  67         if filename:
>  68             if filename.endswith(".xls"):
>  69                 # Looks like a spreadsheet
>  70                 fp = open(os.path.join(dir, filename), 'wb')
>  71                 fp.write(part.get_payload(decode=1))
>  72                 fp.close()
> 
> What I want to change is instead of writing the file with the given 
> filename of the attachment, I want to write the filename using the email 
> address name and a timestamp.
> 
> To figure out how to do this, I was using the Python shell and walking 
> through this same sequence.  I open an example email using:
> 
>   msg = email.message_from_file(fh)
> 
> But when I do:
> 
>   part = msg.walk()
> 
> I get a generator object not the object I'm looking for.  How do I get 
> the object to which I can call "get_content_maintype()" so I can keep 
> testing and playing with the methods available to me.  I'm mostly just 
> walking through the process looking and doing a dir() on each object to 
> see the methods available until I find what I'm looking for.
> 
> Thanks,
> Rob



More information about the Python mailing list