Advertisement
robjones90

Email verify 6

Dec 12th, 2019
948
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.57 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. #    for row in dict:
  22. #        writer.writerow(row)
  23.  
  24. write_list = []
  25.  
  26. with open('emails.csv', newline='') as csvfile:
  27.     reader = csv.reader(csvfile, delimiter=',')
  28.     next(reader) # Skip the firstline
  29.     for row in reader:
  30.         row = "".join(row)
  31.         print(row)
  32.        
  33.         def matcher(row):
  34.             addressToVerify = row
  35.             match = re.match('^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$', addressToVerify)
  36.  
  37.             if match == None:
  38.                 return False
  39.             if match:
  40.                 return True
  41.  
  42.         if matcher(row) == True: #<- the email from the row above goes here
  43.             regexp = re.search("\@(.*)", row)
  44.             domain = regexp.group(1)
  45.             print("Domain: %s "% domain)
  46.             records = dns.resolver.query(domain, 'MX')
  47.             mxRecord = records[0].exchange
  48.             mxRecord = str(mxRecord)
  49.             # Get local server hostname
  50.             host = socket.gethostname()
  51.  
  52.             # SMTP lib setup (use debug level for full output)
  53.             server = smtplib.SMTP()
  54.             server.set_debuglevel(0)
  55.  
  56.             # SMTP Conversation
  57.             server.connect(mxRecord)
  58.             server.helo(host)
  59.             server.mail(row)
  60.             code, message = server.rcpt(str(row))
  61.             server.quit()
  62.             # Assume 250 as Success
  63.             if code == 250:
  64.                 print(">> %s"% row)
  65.                 print('%s == Success'% row)
  66.                 new = {'emails': row, 'successful': 'SUCCESSFUL'}
  67.                 write_list.append(new.copy())
  68.                 #writer.writerow(new)
  69.             else:
  70.                 print('%s == Bad'% row)
  71.  
  72.                 new = {'emails': row, 'successful': 'BAD'}
  73.                 write_list.append(new.copy())
  74.         else:
  75.             print("No Match")
  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