I'm writing a program in python to sort the mail in standard Unix email boxes. In my "prof of concept" example I am coping a letter to a second mailbox if the letter was send from a particular email address. When I read the destination mailbox with cat, I can see that something is getting copied to it, but the mail program does not recognize any new letters in the destination mailbox. It would seam that the "OutFile.write(Message.get_unixfrom())" line is essential. However if I run with this line uncommented then I get an the following error. "TypeError: argument 1 must be string or read-only character buffer, not None". I created this program by following an example posted somewhere on the Internet, that I can't seam to find anymore. At one time I was able to get Python to put new letters in a mailbox.
Also, I was wondering is there were a way to use Python to delete items from a mailbox. I could create I temp box of non-deleted then copy to the source box, but that seams messy. Here is my example program.. def CopyToBox(Source,Address,Destination): AddressRE=re.compile( "([a-zA-Z0-9._-]+)@([a-zA-Z0-9._-]+)\.([a-zA-Z0-9]+)") InFile = open("/home/stevef/mail/%s" % Source) OutFile = open("/home/stevef/mail/%s" % Destination,"a") Box = mailbox.PortableUnixMailbox(InFile) Envelope=Box.next() while 1: Envelope=Box.next() if Envelope == None: break print Envelope.getallmatchingheaders("from")[0] Match=AddressRE.search( Envelope.getallmatchingheaders("from")[0]) if Match: Set=Match.groups() if "[EMAIL PROTECTED]" % Set == Address: print "Copy letter from [EMAIL PROTECTED]" % Set Message = email.message_from_file(Envelope.fp) #OutFile.write(Message.get_unixfrom()) ##error OutFile.write("\n") OutFile.write(Message.as_string()) InFile.close() OutFile.close() return -- http://mail.python.org/mailman/listinfo/python-list