Skip to content

Instantly share code, notes, and snippets.

@bboe
Created September 22, 2011 06:06
Show Gist options
  • Save bboe/1234164 to your computer and use it in GitHub Desktop.
Save bboe/1234164 to your computer and use it in GitHub Desktop.
Empty UCSB's umail inbox. Run via: ./umail_delete.py -u <USERNAME> -d
#!/usr/bin/env python
import getpass, imaplib, sys
from optparse import OptionParser
def main():
parser = OptionParser()
parser.add_option('-s', '--save', help='file to save contents to')
parser.add_option('-d', '--delete', action='store_true',
help='delete contents')
parser.add_option('-u', '--user', help='your umail username')
(options, args) = parser.parse_args()
if not options.save and not options.delete:
parser.error('Either --save or --delete must be provided')
if options.user:
user = options.user
else:
sys.stdout.write('Username: ')
user = sys.stdin.readline().strip()
tries = 0
while tries < 3:
tries += 1
pswd = getpass.getpass()
try:
imap = imaplib.IMAP4_SSL('incoming.umail.ucsb.edu', 993)
except:
raise
try:
imap.login(user, pswd)
break
except imap.error, e:
print e
else:
print 'Too many failed attempts, please try again.'
return 1
imap.select()
_, data = imap.search(None, 'ALL')
msgs = data[0].split()
if len(msgs) == 0:
print 'Your UMAIL is empty!'
return 0
else:
print 'Found %d messages' % (len(msgs))
if options.save:
save_file = open(options.save, 'w')
for i in msgs:
sys.stdout.write('.')
sys.stdout.flush()
if options.save:
_, data = imap.fetch(i, '(RFC822)')
save_file.write('---MSG #%s---\n%s\n' % (i, data[0][1]))
if options.delete:
imap.store(i, '+FLAGS', '\\Deleted')
print
if options.save:
print 'Saved %d messages to %s' % (len(msgs), options.save)
save_file.close()
if options.delete:
_, data = imap.expunge()
print 'Deleted %d messages' % (len(data))
imap.close()
imap.logout()
return 0
if __name__ == '__main__':
sys.exit(main())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment