0

指定されたスクリプトは、一部の電子メール アドレスを正しく検証していません。

例えば

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))

より正確にするにはどうすればよいですか?

4

1 に答える 1