VALIDACIÓN DE EMAILS CON PYTHON: GUÍA COMPLETA


TL;DR:

En este blog, exploramos la importancia de validar direcciones de correo electrónico en aplicaciones web y cómo hacerlo eficientemente en Python. Presentamos métodos, desde expresiones regulares y bibliotecas externas hasta el uso de la API de Valid Email, destacando su confiabilidad y capacidad para verificar la validez, sintaxis, y otros detalles de direcciones de correo electrónico. Obtén una API key, sigue los pasos para enviar solicitudes y obtén respuestas JSON detalladas para mejorar la gestión de correos electrónicos en tu aplicación de Python.


En el mundo digital actual, la gestión efectiva de correos electrónicos es esencial para cualquier aplicación web. Validar direcciones de correo electrónico no solo mejora la experiencia del usuario sino que también ayuda a mantener bases de datos limpias y precisas. En este blog, exploraremos cómo realizar la validación de correos electrónicos utilizando Python, una herramienta poderosa y versátil.

¿Por qué es importante validar correos electrónicos?

La validación de direcciones de correo electrónico es crucial para garantizar que los usuarios proporcionen información de contacto precisa y que las bases de datos no se vean afectadas por entradas incorrectas. Además, facilita la comunicación efectiva y ayuda a prevenir fraudes y abusos.

Como el spam es un problema tan grave, los proveedores de correo electrónico tienen mucho cuidado de asegurarse de que los mensajes que salen de sus sistemas no son spam, sino legítimos, y de que las direcciones de correo electrónico se han recopilado legítimamente.

Una forma de hacerlo es controlar las tasas de rebote. Si envías muchos correos electrónicos que rebotan (porque la dirección de correo electrónico es inválida), es posible que te marquen en su sistema como spam. Por lo tanto, si un proveedor de correo electrónico (por ejemplo, Gmail) recibe muchos mensajes tuyos dirigidos a direcciones que no existen, puede bloquearte.

Herramientas y bibliotecas en Python

1. Expresiones regulares (regex)

Python ofrece el módulo re para trabajar con expresiones regulares. Puedes crear patrones regex para validar la estructura básica de una dirección de correo electrónico.

import re
  
def validar_correo(email):
    patron = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
    return re.match(patron, email) is not None

Este patrón regex comprueba:

  • Una parte local formada por caracteres alfanuméricos, puntos, guiones bajos, pluses y guiones.
  • La presencia del símbolo '@'.
  • Un dominio que contenga caracteres alfanuméricos, puntos y guiones.

NO comprueba

  • Que la dirección de correo electrónico corresponda a un dominio real (por ejemplo, matthew@bigfakedomainthatisntreal.com) devuelve Verdadero.
  • Que la dirección de correo electrónico cumpla los requisitos de sintaxis del proveedor de correo electrónico específico (por ejemplo, el número de puntos en las direcciones de yahoo).


2. Bibliotecas externas

Utilizar bibliotecas especializadas puede simplificar el proceso. Por ejemplo, puedes incorporar email-validator mediante:

pip install email-validator

from email-validator import validate_email

def validar_correo(email):
    return validate_email(email, verify=True)

Esto es, sin duda, un paso adelante respecto al uso básico de Regex para validar un correo electrónico. Los únicos inconvenientes de usar esta biblioteca son que no maneja direcciones obsoletas.

3. Utilizando un servicio externo

La forma más fiable y eficaz de validar correos electrónicos en Python es utilizar una API específica de terceros. APIs como Valid Email ofrecen un endpoint REST seguro que acepta una dirección de correo electrónico y produce una respuesta JSON con detalles sobre la validez de la dirección.

El endpoint de Valid Email es más fiable que una biblioteca, que suele estar desactualizada, debido a que se actualiza con regularidad. La API verifica los servidores SMTP, examina los registros MX, la sintaxis y la validez del dominio. Además, puede informar de si el correo electrónico es un correo electrónico temporal o un correo electrónico gratuito.

Un control masivo de emails también puede hacerse mediante la API. Para recibir un informe sobre la validez de cada correo electrónico de la lista, sólo se debe subir un archivo CSV que contenga la lista de correos electrónicos, y la API le devolverá una respuesta por dirección. Esto es excelente para auditorías de listas de correo. Lee más sobre cómo hacerlo aqui.

Obtener una API key

Para comenzar, tendrás que registrarte para crear una cuenta y obtener una API key. Con tu cuenta gratuita, obtienes una API key que te autentica en la API y te permite realizar solicitudes.

Signing up in Valid Email

Una vez registrado, podrás ver en el Dashboard tu API key.

Making a request using the API

Utilizar la API key para enviar una solicitud a la API

Vamos a instalar primero el módulo requests, ya que lo utilizaremos para realizar una petición GET al endpoint de la Valid Email.

pip install requests

Para enviar la solicitud a la API y revisar la respuesta JSON, crearemos una función llamada enviar_peticion_validacion_email().

import requests
def enviar_peticion_validacion_email(correo):
    try:
        response = requests.get("https://validemail.io/v1/validate?api_key=TU_API_KEY&email={correo}")
        print(response.content)
    except requests.exceptions.RequestException as api_error:
        print(f"Ocurrió un error al contactar a la API: {api_error}")
        raise SystemExit(api_error)

La respuesta debería verse así:

{
  "email" : "jake@validemail.io",
  "is_valid" : "Valid",
  "sub_status" : "Email is valid",
  "has_valid_format" : true,
  "is_free_provider" : true,
  "is_disposable" : false,
  "account" : "jake",
  "domain" : "validemail.io"
}

De esta manera podrás evaluar si el correo es válido, es un correo temporal, gratuito, y otros aspectos más.

Conclusión

En este tutorial hemos visto tres métodos para determinar si una dirección de correo electrónico existe en Python: regex, una biblioteca de Python y una API de validación dedicada. El método que elijas para tu aplicación Python dependerá de tus necesidades y de la escala de tu aplicación.

Para una aplicación de prueba, una aplicación que no se utilizará mucho o una aplicación en la que los parámetros de correo electrónico son conocidos y controlables, el uso de Regex puede ser una opción viable. Para cualquier otra cosa, sin embargo, recomendamos elegir uno de los paquetes de Python o, mejor aún, utilizar una API dedicada.

Features

Test our Email Validation tool

Submit any email below. We'll handle the rest.

Contact

Get In Touch

Contact us!

Any thoughts, feedback, or questions? Let us know!
Loading...