#!/usr/bin/env python3 import email, mailbox, re, sys if len(sys.argv) != 2 or not re.match('0|1|2', sys.argv[1]): print("USAGE: fp_mailbox.py 0|1|2", " 0 = use raw UTF-8 string", " 1 = use UTF-8 string", " 2 = use escaped byte string", sep="\n") sys.exit(0) if sys.argv[1] == '0': input = r'''Date: Tue, 4 Jan 2011 17:37:26 +0100 (CET) From: "SAJATNAPTAR.COM" To: road@nowhere.org Subject: Falinaptár ingyenes házhozszállítással. Már rendeltél? Olvass el! Message-ID: <20110104053726system@sajatnaptar.com> You better check your symlinks, son. Don't you know that string input needs to be plain ASCII? This is unescaped UTF-8. ''' msg = email.message_from_string(input) elif sys.argv[1] == '1': input = '''Date: Tue, 4 Jan 2011 17:37:26 +0100 (CET) From: "SAJATNAPTAR.COM" To: road@nowhere.org Subject: Falinaptár ingyenes házhozszállítással. Már rendeltél? Olvass el! Message-ID: <20110104053726system@sajatnaptar.com> You better check your symlinks, son. Don't you know that string input needs to be plain ASCII? This is unescaped UTF-8. ''' msg = email.message_from_string(input) else: input = b'''Date: Tue, 4 Jan 2011 17:37:26 +0100 (CET) From: "SAJATNAPTAR.COM" To: road@nowhere.org Subject: Falinapt\xE1r ingyenes h\xE1zhozsz\xE1ll\xEDt\xE1ssal. M\xE1r rendelt\xE9l? Olvass el! Message-ID: <20110104053726system@sajatnaptar.com> You better check your symlinks, son. Don't you know that string input needs to be plain ASCII? P.S.: This byte string is backslash-escaped 8bit. ''' msg = email.message_from_bytes(input) print("DEFECTS: ", len(msg.defects)) if len(msg.defects): print(" Ooops, really: defects! ", ';'.join(msg.defects)) mbox = mailbox.mbox('./test.mbox', create=True) mbox.add(msg) mbox.close() sys.exit(0)