web-dev-qa-db-fra.com

python: méthode correcte vérifier si le courrier électronique existe

J'essaie de vérifier si un e-mail existe réellement en résolvant d'abord son DNS, puis de vérifier si l'e-mail est valide en utilisant le code ci-dessous:

    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)

Cela fonctionne quelques fois, mais lorsque j'envoie plusieurs demandes, je reçois un message comme:

"5.7.1 Service non disponible, hôte client [122.166.xxx.xxx] bloqué à l'aide de Spamhaus. Pour demander la suppression de cette liste, voir http://www.spamhaus.org/lookup.lasso (AS160312312) [BL2NAM02FT12312.eop-nam02.prod.protection.Outlook.com] '"

Je comprends qu'ils essaient de bloquer mon adresse IP car il pense que c'est du spam.

Voici mes questions:

  • Existe-t-il une bonne façon de faire ce type de validation d'email, sans être marqué comme spam? Est-ce qu'il est marqué comme spam alors que j'exécute le code sur mon système et que je donne juste une valeur fictive pour les e-mails comme

server.mail ('[email protected] ')

  • Est-il possible d'utiliser un proxy pour ce faire? Mon cas d'utilisation nécessite la vérification de 100 adresses e-mail. Je vois des API commerciales disponibles pour la validation des e-mails, mais ce n'est pas faisable pour moi pour le moment.
6
Sam Rohn

Essaye ça.

pip install validate_email

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

Visitez https://pypi.org/project/validate_email/ pour plus d'informations.

1
Pgarr