Advertisement
robjones90

revised email verify

Dec 16th, 2019
353
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.66 KB | None | 0 0
  1. import re
  2. import dns.resolver
  3. import socket
  4. import smtplib
  5. import csv
  6.  
  7. email_list = ['rbrt.jns90@gmail.com', 'bruno@xuzo.com']
  8.  
  9.  
  10. ##How to write to a CSV
  11. #dict = [
  12. #    {'emails': 'rbrt.jns90@gmail.com'},
  13. #    {'emails': 'bruno@xuzo.com'},
  14. #    {'emails': 'blah@foo.com'}
  15. #    ]
  16.  
  17. #with open('emails.csv', 'w', newline='') as csvfile:
  18. #    fieldnames = ['emails']
  19. #    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
  20. #    writer.writeheader()
  21.  
  22. write_list = []
  23.  
  24. with open('emails.csv', newline='') as csvfile:
  25.     reader = csv.reader(csvfile, delimiter=',')
  26.     next(reader) # Skip the firstline
  27.     for row in reader:
  28.         row = "".join(row)
  29.         print(row)
  30.        
  31.         def matcher(row):
  32.             addressToVerify = row
  33.             match = re.match('^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$', addressToVerify)
  34.  
  35.             if match == None:
  36.                 return False
  37.             if match:
  38.                 return True
  39.  
  40.         if matcher(row) == True: #<- the email from the row above goes here
  41.             regexp = re.search("\@(.*)", row)
  42.             try:
  43.                 domain = regexp.group(1)
  44.                 print("Domain: %s "% domain)
  45.                 records = dns.resolver.query(domain, 'MX')
  46.                 mxRecord = records[0].exchange
  47.                 mxRecord = str(mxRecord)
  48.                 # Get local server hostname
  49.                 host = socket.gethostname()
  50.  
  51.                 # SMTP lib setup (use debug level for full output)
  52.                 server = smtplib.SMTP()
  53.                 server.set_debuglevel(0)
  54.  
  55.                 # SMTP Conversation
  56.                 server.connect(mxRecord)
  57.                 server.helo(host)
  58.                 server.mail(row)
  59.                 code, message = server.rcpt(str(row))
  60.                 server.quit()
  61.             except:
  62.                 pass
  63.             finally:
  64.                 # Assume 250 as Success
  65.                 if code == 250:
  66.                     print(">> %s"% row)
  67.                     print('%s == Success'% row)
  68.                     new = {'emails': row, 'successful': 'SUCCESSFUL'}
  69.                     write_list.append(new.copy())
  70.                     #writer.writerow(new)
  71.                 else:
  72.                     print('%s == Bad'% row)
  73.  
  74.                     new = {'emails': row, 'successful': 'BAD'}
  75.                     write_list.append(new.copy())
  76.  
  77. with open('successful.csv', 'w', newline='') as successful:
  78.     fieldnames = ['emails', 'successful']
  79.     writer = csv.DictWriter(successful, fieldnames=fieldnames, quoting=csv.QUOTE_MINIMAL)
  80.     writer.writeheader()
  81.     writer.writerows(write_list)
  82.     successful.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement