Email Verification in Python
| import re | |
| import smtplib | |
| import dns.resolver | |
| # Address used for SMTP MAIL FROM command | |
| fromAddress = 'corn@bt.com' | |
| # Simple Regex for syntax checking | |
| regex = '^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$' | |
| # Email address to verify | |
| inputAddress = input('Please enter the emailAddress to verify:') | |
| addressToVerify = str(inputAddress) | |
| # Syntax check | |
| match = re.match(regex, addressToVerify) | |
| if match == None: | |
| print('Bad Syntax') | |
| raise ValueError('Bad Syntax') | |
| # Get domain for DNS lookup | |
| splitAddress = addressToVerify.split('@') | |
| domain = str(splitAddress[1]) | |
| print('Domain:', domain) | |
| # MX record lookup | |
| records = dns.resolver.query(domain, 'MX') | |
| mxRecord = records[0].exchange | |
| mxRecord = str(mxRecord) | |
| # SMTP lib setup (use debug level for full output) | |
| server = smtplib.SMTP() | |
| server.set_debuglevel(0) | |
| # SMTP Conversation | |
| server.connect(mxRecord) | |
| server.helo(server.local_hostname) ### server.local_hostname(Get local server hostname) | |
| server.mail(fromAddress) | |
| code, message = server.rcpt(str(addressToVerify)) | |
| server.quit() | |
| #print(code) | |
| #print(message) | |
| # Assume SMTP response 250 is success | |
| if code == 250: | |
| print('Success') | |
| else: | |
| print('Bad') |