2017-06-19 10 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(文字列の中に、いくつかの異なった手でコード化された入力を持つだけで別のプログラムを試してみました(addressToVerify)) 'それがworkiであることを確認するng?また、エラーは正確に何ですか?あなたは 'try'ブロック内にあるので、例外を処理する必要があります... –

+1

[validate_email](https://pypi.python.org/pypi/validate_email)パッケージを試すことができます! –

+1

どのようなエラーが表示されますか? – Nurjan

答えて

3

RCPTコマンドは、電子メールの妥当性チェックをチェックすることは決してお勧めしません。ほとんどのSMTPサーバーは、いくつかの試行後にIPを禁止するか、電子メールをスパム発信者から安全に保つためのコマンドを無視します。 電子メールの存在を検証する唯一の方法は、検証電子メールを送信することです。あなたが唯一のGスイートのGoogleドメインでメールをチェックする必要がある場合は

+0

私はこの種の小切手を実行しています。私のメールの大部分がバウンスしており、これが私の評判に影響するかもしれないからです。したがって、メールを送信する前に、私はそれを確認する必要があります.. –

+1

この場合、SMTPサーバーの管理者に連絡し、許可を求める必要があります。試してみることのできるもう1つの方法は、同じドメイン(yahoo、 google ...)ブラウザの自動化を使用して、ユーザー名が使用されているかどうか確認してください。唯一の信頼できる方法は、確認リンクまたはトークンを送信することです。 – SEDaradji

+0

私は大量のメールを受信します。私は送信と確認ができません –

0

あなたはこれらを使用することができます。

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)第2あなたは電子メールが存在するかどうかを確認するには、これらの資格情報を使用して作成したサービスオブジェクトを使用することができます。https://developers.google.com/admin-sdk/directory/v1/quickstart/python

関連する問題