Guest User

Untitled

a guest
Jan 21st, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. import getpass, imaplib, sys
  4. from optparse import OptionParser
  5.  
  6. def main():
  7. parser = OptionParser()
  8. parser.add_option('-s', '--save', help='file to save contents to')
  9. parser.add_option('-d', '--delete', action='store_true',
  10. help='delete contents')
  11. parser.add_option('-u', '--user', help='your umail username')
  12. (options, args) = parser.parse_args()
  13.  
  14. if not options.save and not options.delete:
  15. parser.error('Either --save or --delete must be provided')
  16.  
  17. if options.user:
  18. user = options.user
  19. else:
  20. sys.stdout.write('Username: ')
  21. user = sys.stdin.readline().strip()
  22.  
  23. tries = 0
  24. while tries < 3:
  25. tries += 1
  26. pswd = getpass.getpass()
  27. try:
  28. imap = imaplib.IMAP4_SSL('incoming.umail.ucsb.edu', '993')
  29. except:
  30. raise
  31.  
  32. try:
  33. imap.login(user, pswd)
  34. break
  35. except imap.error, e:
  36. print e
  37. else:
  38. print 'Too many failed attempts, please try again.'
  39. return 1
  40.  
  41. imap.select()
  42. _, data = imap.search(None, 'ALL')
  43. msgs = data[0].split()
  44.  
  45. if len(msgs) == 0:
  46. print 'Your UMAIL is empty!'
  47. return 0
  48. else:
  49. print 'Found %d messages' % (len(msgs))
  50.  
  51. if options.save:
  52. save_file = open(options.save, 'w')
  53.  
  54. for i in msgs:
  55. sys.stdout.write('.')
  56. sys.stdout.flush()
  57. if options.save:
  58. _, data = imap.fetch(i, '(RFC822)')
  59. save_file.write('---MSG #%s---\n%s\n' % (i, data[0][1]))
  60. if options.delete:
  61. imap.store(i, '+FLAGS', '\\Deleted')
  62. print
  63.  
  64. if options.save:
  65. print 'Saved %d messages to %s' % (len(msgs), options.save)
  66. save_file.close()
  67. if options.delete:
  68. _, data = imap.expunge()
  69. print 'Deleted %d messages' % (len(data))
  70.  
  71. imap.close()
  72. imap.logout()
  73. return 0
  74.  
  75. if __name__ == '__main__':
  76. sys.exit(main())
Add Comment
Please, Sign In to add comment