Amazing-Python-Scripts
66 строк · 1.8 Кб
1from dns import resolver2import smtplib3import socket4import re5
6# FIRST CHECK
7
8
9def check_syntax(email):10regex = r'^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[.]\w{2,3}$'11if (re.search(regex, email)):12print("Check 1 (Syntax) Passed")13else:14print("Check 1 FAILED! Bad Syntax, Invalid Email!")15exit()16
17# SECOND CHECK
18
19
20def check_dns(email, domain):21try:22records = resolver.resolve(domain, 'MX')23mxRecord = str(records[0].exchange)24print("Check 2 (DNS -", mxRecord+") Passed")25return mxRecord26except:27print("Check 2 FAILED! The domain", domain,28"does not exist, Invalid Email!")29exit()30
31# THIRD CHECK
32
33
34def check_response(email, domain, mxRecord):35try:36# Get local server hostname37host = socket.gethostname()38
39# SMTP lib setup (use debug level for full output)40server = smtplib.SMTP()41server.set_debuglevel(0)42
43# SMTP Conversation44server.connect(mxRecord)45server.helo(host)46server.mail(email)47code, message = server.rcpt(str(email))48server.quit()49
50# Assume 250 as Success51if code == 250:52print("Check 3 (SMTP response) Passed")53print(email, "is a VALID email address!")54else:55print("Check 3 FAILED! The user", email.split(56"@")[0], "does not exist, Invalid Email!")57except socket.error as socketerror:58print("Check 3 HALTED! The domain", domain,59", either does not have an SMTP or have restricted access through external scripts")60
61
62email = input("Enter your Email id :")63domain = email.split("@")[-1]64check_syntax(email) # CHECK165mxRecord = check_dns(email, domain) # CHECK266check_response(email, domain, mxRecord) # CHECK367