Skip to content

Instantly share code, notes, and snippets.

@zaiste
Forked from seandenigris/.gitignore
Created November 13, 2018 14:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zaiste/b0461993bf9d89cd0416f2eb51c93436 to your computer and use it in GitHub Desktop.
Save zaiste/b0461993bf9d89cd0416f2eb51c93436 to your computer and use it in GitHub Desktop.
Simple script to dump an IMAP folder into eml files
.password
Downloads/
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#python ./dump-imap.py -s server.net -u user@domain.com -r "Subfolder"
import imaplib
import getpass
import argparse
import os.path
argparser = argparse.ArgumentParser(description="Dump a IMAP folder into .eml files")
argparser.add_argument('-s', dest='host', help="IMAP host, like imap.gmail.com", required=True)
argparser.add_argument('-u', dest='username', help="IMAP username", required=True)
argparser.add_argument('-r', dest='remote_subfolder', help="Remote folder to download", default='')
args = argparser.parse_args()
file = open('.password', 'r')
password = file.read().strip()
local_folder = './Downloads/' + args.remote_subfolder
if not os.path.exists(local_folder):
os.makedirs(local_folder)
remote_folder = 'INBOX.' + args.remote_subfolder
gmail = imaplib.IMAP4_SSL(args.host)
gmail.login(args.username, password)
gmail.select(remote_folder)
typ, data = gmail.search(None, 'ALL')
for num in data[0].split():
typ, data = gmail.fetch(num, '(RFC822)')
f = open('%s/%s.eml' %(local_folder, num), 'w')
print >> f, data[0][1]
gmail.close()
gmail.logout()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment