web-dev-qa-db-ja.com

python:メールが存在するかどうかを確認する正しい方法

最初にDNSを解決してメールが実際に存在するかどうかを確認してから、以下のコードを使用してメールが有効かどうかを確認しています。

    email = [email protected]
    domain = email.split("@")[-1]
    records = dns.resolver.query(domain, 'MX')
    mxRecord = records[0].exchange
    mxRecord = str(mxRecord)
    server.connect(mxRecord)
    server.helo(Host)
    server.mail('[email protected]')
    code, message = server.rcpt(str(email))
    server.quit()
    if code == 250:
        print('valid email', message) 
    else:
        print('invalid email', message)

これは数回機能しますが、複数のリクエストを送信すると、次のようなメッセージが表示されます。

「5.7.1サービスを利用できません。クライアントホスト[122.166.xxx.xxx]がSpamhausを使用してブロックされています。このリストからの削除をリクエストするには、 http://www.spamhaus.org/lookup.lasso (AS160312312)を参照してください[BL2NAM02FT12312.eop-nam02.prod.protection.Outlook.com] '"

スパム行為と思われるため、私のIPアドレスをブロックしようとしていることを理解しています。

ここに私の質問があります:

  • スパムとしてマークされることなく、このタイプの電子メール検証を行う正​​しい方法はありますか?私のシステムでコードを実行していて、メールのダミー値を指定しているときに、スパムとしてマークされていますか?

server.mail('[email protected] ')

  • これを行うためにプロキシを使用することは可能ですか?私のユースケースでは、数百のメールアドレスを確認する必要があります。電子メールの検証に利用できる商用APIがいくつかありますが、現時点では実現できません。
6
Sam Rohn

これを試して。

pip install validate_email

from validate_email import validate_email
is_valid = validate_email('[email protected]', verify=True)

詳細は https://pypi.org/project/validate_email/ をご覧ください。

1
Pgarr