Advertisement
eudemonics

gmail version 1.2 - WORKING! - unfinished

Oct 1st, 2013
643
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import email, getpass, imaplib, re, sys, os, os.path
  2.  
  3. count = 0
  4.  
  5. emailaddr = raw_input("enter email --> ")
  6. emailpass = getpass.getpass("enter password --> ")
  7.  
  8. #VALIDATE EMAIL USING REGEX
  9. match = re.search(r'^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$', emailaddr)
  10.  
  11. if match:
  12.    count = 0
  13.    print 'email is valid'
  14.    print 'checking for gmail'
  15.  
  16. else:
  17.    count = 1
  18.    print 'invalid email address'
  19.    print 'bad attempts: ' + str(count)
  20.      
  21.    if count > 0 and count < 4:        
  22.       emailaddr = raw_input("enter email again --> ")
  23.       match2 = re.search(r'^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$', emailaddr)
  24.       if match2:
  25.          print 'email is valid'
  26.          emailpass = getpass.getpass("enter password --> ")
  27.          print 'checking for gmail'
  28.  
  29.       else:
  30.          count = 2
  31.          print 'invalid email address'
  32.          print 'bad attempts: ' + str(count)
  33.          emailaddr = raw_input("enter email again --> ")
  34.          match3 = re.search(r'^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$', emailaddr)
  35.  
  36.          if match3:              
  37.             print 'email is valid'
  38.             emailpass = getpass.getpass("enter password --> ")
  39.             print 'checking for gmail'
  40.  
  41.          else:
  42.             count = 3
  43.             print 'invalid email address'
  44.             print 'bad attempts: ' + str(count)
  45.  
  46.             if count > 3:
  47.                print 'too many bad attempts'
  48.                print 'aborting..'
  49.  
  50. if 'gmail.com' in emailaddr:
  51.  
  52.    print 'GMAIL address found'
  53.    print 'attempting logon'
  54.  
  55.    # connecting to IMAP
  56.    server = imaplib.IMAP4_SSL('imap.gmail.com')
  57.  
  58.    while True:
  59.  
  60.       try:
  61.          loginstatus, logindata = server.login(emailaddr, emailpass)
  62.          if loginstatus == 'OK':
  63.             print 'login successful, fetching emails..'
  64.  
  65.       except:
  66.          pass
  67.          print 'error: login failure'
  68.          emailaddr = raw_input("please enter email again --> ")
  69.          matchcred = re.search(r'^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$', emailaddr)
  70.  
  71.          if matchcred:
  72.             emailpass = getpass.getpass("enter password --> ")
  73.             print 'attempting logon again'
  74.             continue
  75.  
  76.          else:
  77.             print 'invalid email address'
  78.             emailaddr = raw_input("please enter email again --> ")
  79.             matchcred = re.search(r'^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$', emailaddr)
  80.             continue
  81.  
  82.       else:
  83.          break
  84.      
  85.    server.list()
  86.  
  87.    # CHOOSE INBOX OR ALL MAIL BY COMMENTING AND UNCOMMENTING BELOW
  88.    server.select('inbox') # connect to inbox
  89.    #server.select('[Gmail]/All Mail') # connect to all mail folder
  90.  
  91.    result, uids = server.uid('SEARCH', None, "ALL")
  92.  
  93.    # search and return unique IDs (UIDs)
  94.  
  95.    for email_uid in uids[0].split():
  96.  
  97.       result, data = server.uid('FETCH', email_uid, '(RFC822)')
  98.  
  99.       body = data[0][1] # raw text of entire email
  100.  
  101.       save_path = 'output'
  102.       user_savename = emailaddr.rstrip("@gmail.com")
  103.       file_name = user_savename+"-"+email_uid+".txt"
  104.       complete_name = os.path.join(save_path, file_name)
  105.  
  106.       if os.path.isfile(complete_name):
  107.          print complete_name + ' already exists, skipping..'
  108.          continue
  109.  
  110.       else:
  111.          file = open(complete_name, 'w')
  112.          file.write(body)
  113.          file.close()
  114.      
  115.          print 'raw message data saved to new file: ' + complete_name
  116.  
  117. #############
  118.    # TO FETCH MULTIPLE EMAILS AT ONCE
  119.  
  120.    #result, uids = server.uid('SEARCH', None, "ALL")
  121.  
  122.    #fetch_ids = ','.join(uids[0].split())
  123.    ##convert to comma separated list
  124.  
  125.    #result, data = server.uid('FETCH', fetch_ids, '(RFC822)')
  126.    ##return all emails
  127.  
  128.    #body = data[0][1]
  129.    #print body
  130. #############
  131.  
  132. #############
  133.    # TO GET LATEST EMAIL BY UID
  134.  
  135.    #latest_email_uid = items[0].split()[-1]
  136.  
  137.    #result, data = server.uid('FETCH', latest_email_uid, '(RFC822)')
  138.    ##fetch email body (RFC822) for latest UID
  139.  
  140.    #body = data[0][1] # raw text of entire email
  141.    #print body
  142. #############
  143.  
  144. #############
  145.    # TO SEARCH LATEST SEQUENTIAL ID INSTEAD OF UNIQUE ID
  146.  
  147.    #result, sids = mail.search(None, "ALL")
  148.    #ids = sids[0] # sids is a list
  149.    #id_list = ids.split() # ids is a space separated string
  150.    #latest_email_id = id_list[-1] # get the latest
  151.  
  152.    #result, data = mail.fetch(latest_email_id, "(RFC822)")
  153.    ## fetch the email body (RFC822) for the given ID
  154.  
  155.    #body = data[0][1] # raw text of entire email
  156. #############
  157.  
  158.    print 'inbox contents successfully saved to file. YAY!'
  159.  
  160.    print 'logging out..'
  161.  
  162.    server.logout()
  163.  
  164.    print "logout successful. exiting.."
  165.  
  166. else:
  167.  
  168.    print 'GMAIL address not found. quitting..'
  169.  
  170. sys.exit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement