指定されたスクリプトは、一部の電子メール アドレスを正しく検証していません。
例えば
himanshu.jain@traveldglobe.com
jobbuzz@timesjobs.com
私のスクリプトによれば有効ではありませんが、leopathu.com/verify-emailでこれらを正しく検証しました。
import re
import dns.resolver
import socket
import smtplib
def email_verifier(email):
match = re.match(r'([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$', email)
if(match == None):
return "Invalid Email."
else:
splitEmail = email.split('@')
domain = str(splitEmail[1])
records = dns.resolver.query(domain, 'MX')
mxRecord = records[0].exchange
mxRecord = str(mxRecord)
# Get local server hostname
host = socket.gethostname()
# SMTP lib setup (use debug level for full output)
server = smtplib.SMTP()
server.set_debuglevel(0)
# SMTP Conversation
server.connect(mxRecord)
server.helo(host)
server.mail('sender@gmail.com')
code, message = server.rcpt(str(email))
server.quit()
#returns 250 if valid
if code == 250:
return ('Valid Email Address')
else:
return ('invalid Email Address')
email = input("Enter email address : ")
print(email_verifier(email))
より正確にするにはどうすればよいですか?