检查的电子邮件中是否存在与否,只适用于Gmail帐户,其他人没有工作

检查的电子邮件中是否存在与否,只适用于Gmail帐户,其他人没有工作

问题描述:

我创建一个Python函数检查一个给定的电子邮件ID是否真正在Python的存在与否。这里是我的代码:检查的电子邮件中是否存在与否,只适用于Gmail帐户,其他人没有工作

def email_validate(email_address): 
    addressToVerify = email_address 
    domain_name = addressToVerify.split('@')[1] 
    try: 
     records = dns.resolver.query(domain_name, 'MX') 
    except Exception as e: 
     print e 
     a = traceback.format_exc() 
     print a 
     return HttpResponse(json.dumps({"success":False,"message":"Email Domain is not valid."}), content_type="application/json") 

    mxRecord = records[0].exchange 
    mxRecord = str(mxRecord) 

    server = smtplib.SMTP() 
    server.set_debuglevel(0) 

    # SMTP Conversation 
    server.connect(mxRecord) 
    server.helo(host) 
    server.mail('[email protected]') 
    try: 
     code, message = server.rcpt(str(addressToVerify)) 
     server.quit() 
    except: 
     a = traceback.format_exc() 

    if code == 250: 
     return HttpResponse(json.dumps({"success":True,"message":"Email ID is valid."}), content_type="application/json") 
    else: 
     return HttpResponse(json.dumps({"success":False,"message":"Email ID is not valid."}), content_type="application/json") 

此代码工作正常使用Gmail帐户,但它给出了一个错误的其他电子邮件ID的。如果我尝试其他电子邮件ID的,这条线:

code, message = server.rcpt(str(addressToVerify)) 

给出了一个错误...... 还有,我应该怎么检查这对其他电子邮件ID的?

+1

你尝试只是一个单独的程序与几个不同的手工编码的投入'server.rcpt(STR (addressToVerify))'来验证它是否工作NG?另外,准确的错误是什么?你可以在'try'块中找到它,所以你应该处理异常... –

+1

你可以尝试使用[validate_email](https://pypi.python.org/pypi/validate_email)包! –

+1

你会得到什么错误? – Nurjan

的RCPT命令是从来没有检查电子邮件验证是个好主意,大多数SMTP服务器将多次尝试后禁止你的IP或忽略你的命令,以保持他们的电子邮件从垃圾邮件发送者的安全。 验证电子邮件存在的唯一方法是发送验证电子邮件。

+0

我正在实施这种检查,因为我的邮件大部分都在弹跳,这可能会影响我的声誉。因此,在发送电子邮件之前,我需要验证它。 –

+1

在这种情况下,您应该联系SMTP服务器管理员并要求获得许可,您可以尝试的另一件事是尝试为同一个域创建相同的电子邮件(yahoo,谷歌...)使用浏览器自动化,看看用户名是否被采取,但唯一可靠的方法是发送确认链接或标记 – SEDaradji

+0

我会有大量的电子邮件。我无法发送和确认 –

如果你只需要检查你的谷歌电子邮件域对于G套件,您可以使用这些:

1)首先,你需要得到正确的凭据,以便能够为范围https://www.googleapis.com/auth/admin.directory.user.readonly访问数据 - https://developers.google.com/admin-sdk/directory/v1/guides/delegation#delegate_domain-wide_authority_to_your_service_account

2)其次,您可以使用这些凭据创建的服务对象,以检查是否存在邮件:https://developers.google.com/admin-sdk/directory/v1/quickstart/python