Simple Python script to read and output MailBox body to a file

chuck amadi chuck.amadi at ntlworld.com
Sun Jun 6 11:54:06 EDT 2004


Eric S. Johansson wrote:

> William Park wrote:
>
>> Chuck Amadi <chuck at smtl.co.uk> wrote:
>>
>>> Has anyone got a simple python script that will parse a linux  mbox
>>> and create a large file to view .
>>
>>
>>
>> "Create a large file to view"?  Care to elaborate?
>
>
> I've sent him a working example that disassembles mailboxes in both 
> mbox and maildir form.  Personally, I'm now scouting around for code 
> that will let you delete and expunge messages from an mbox mailbox.  I 
> fear I need to pull my thumb out and expand the mailbox module to 
> handle writing as well.  mbox manipulations are butt ugly.
>
> ---eric
>
> Cheers I do note that I need to create a global-config file I have 
> seen something on this in O'Reilly Python Programming . Albiet I dont 
> need to connect to a pop3 account .Thus would this script need a bit 
> of hacking or is the script I got sufficient as Monday 7th is my D-Day 
> to get that script working and demo to my boss.

Note briefly my main goal is to get the body content to another file for 
processing to Postgresql database.

#file: getSurveyMail.py
## The email messages is read as flat text form a file or other source,
##the text is parsed to produce the object structure of the email message.
#!/usr/bin/env python

import mboxutils
import mailbox
import email
import sys
import os
import rfc822
import StringIO
import email.Parser
import types
 
# email package for managing email messages
# Open Users Mailbox
# class Message()
 
def main():
 
# The Directory that will contain the Survey Results
 
    dir = "/tmp/SurveyResults/"
# The Web Survey User Inbox
# Mailbox /home/testwwws/Mail/inbox
 
    maildir = "/home/testwwws/Mail/inbox"
    for file in os.listdir(maildir):
 
        print os.path.join(maildir, file)
 
        fp = open(os.path.join(maildir, file), "rb")
        p = email.Parser.Parser()
        msg = p.parse(fp)
        fp.close()
        #print msg.get("From")
        #print msg.get("Content-Type")
 
        counter = 1
        for part in msg.walk():
          if part.get_main_type() == 'multipart':
            continue
 
          filename = part.get_param("name")
          if filename==None:
                filename = "part-%i" % counter
          counter += 1
 
 
          fp = open(os.path.join(dir, filename), 'wb')
          print os.path.join(dir, filename)
          fp.write(part.get_payload(decode=1))
          fp.close()
 
 
if __name__ == '__main__':
    main()


>
>
>






More information about the Python-list mailing list