2017-06-19 42 views
-1

我創建一個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

回答

3

的RCPT命令是從來沒有檢查電子郵件驗證是個好主意,大多數SMTP服務器將多次嘗試後禁止你的IP或忽略你的命令,以保持他們的電子郵件從垃圾郵件發送者的安全。 驗證電子郵件存在的唯一方法是發送驗證電子郵件。

+0

我正在實施這種檢查,因爲我的郵件大部分都在彈跳,這可能會影響我的聲譽。因此,在發送電子郵件之前,我需要驗證它。 –

+1

在這種情況下,您應該聯繫SMTP服務器管理員並要求獲得許可,您可以嘗試的另一件事是嘗試爲同一個域創建相同的電子郵件(yahoo,谷歌...)使用瀏覽器自動化,看看用戶名是否被採取,但唯一可靠的方法是發送確認鏈接或標記 – SEDaradji

+0

我會有大量的電子郵件。我無法發送和確認 –

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

相關問題