summaryrefslogtreecommitdiffstats
path: root/Doc/includes/email-unpack.py
diff options
context:
space:
mode:
Diffstat (limited to 'Doc/includes/email-unpack.py')
-rw-r--r--Doc/includes/email-unpack.py53
1 files changed, 34 insertions, 19 deletions
diff --git a/Doc/includes/email-unpack.py b/Doc/includes/email-unpack.py
index c8cb0be..a8f712d 100644
--- a/Doc/includes/email-unpack.py
+++ b/Doc/includes/email-unpack.py
@@ -1,34 +1,48 @@
-#!/usr/bin/env python3
+#!/usr/bin/env python
"""Unpack a MIME message into a directory of files."""
import os
+import sys
import email
+import errno
import mimetypes
-from email.policy import default
-
-from argparse import ArgumentParser
+from optparse import OptionParser
def main():
- parser = ArgumentParser(description="""\
+ parser = OptionParser(usage="""\
Unpack a MIME message into a directory of files.
+
+Usage: %prog [options] msgfile
""")
- parser.add_argument('-d', '--directory', required=True,
- help="""Unpack the MIME message into the named
- directory, which will be created if it doesn't already
- exist.""")
- parser.add_argument('msgfile')
- args = parser.parse_args()
+ parser.add_option('-d', '--directory',
+ type='string', action='store',
+ help="""Unpack the MIME message into the named
+ directory, which will be created if it doesn't already
+ exist.""")
+ opts, args = parser.parse_args()
+ if not opts.directory:
+ parser.print_help()
+ sys.exit(1)
- with open(args.msgfile, 'rb') as fp:
- msg = email.message_from_binary_file(fp, policy=default)
+ try:
+ msgfile = args[0]
+ except IndexError:
+ parser.print_help()
+ sys.exit(1)
try:
- os.mkdir(args.directory)
- except FileExistsError:
- pass
+ os.mkdir(opts.directory)
+ except OSError as e:
+ # Ignore directory exists error
+ if e.errno != errno.EEXIST:
+ raise
+
+ fp = open(msgfile)
+ msg = email.message_from_file(fp)
+ fp.close()
counter = 1
for part in msg.walk():
@@ -43,10 +57,11 @@ Unpack a MIME message into a directory of files.
if not ext:
# Use a generic bag-of-bits extension
ext = '.bin'
- filename = f'part-{counter:03d}{ext}'
+ filename = 'part-%03d%s' % (counter, ext)
counter += 1
- with open(os.path.join(args.directory, filename), 'wb') as fp:
- fp.write(part.get_payload(decode=True))
+ fp = open(os.path.join(opts.directory, filename), 'wb')
+ fp.write(part.get_payload(decode=True))
+ fp.close()
if __name__ == '__main__':