Cómo verificar una dirección de correo electrónico en Python
En este artículo, voy a guiarte a través de la forma más sencilla posible de verificar las direcciones de correo electrónico y mejorar el procedimiento de registro de usuarios para tu aplicación Python.
Verificar correos electrónicos es increíblemente importante. Asegurarse de que los usuarios que se registran en su sitio web tienen una dirección de correo electrónico válida es esencial por varias razones:
- Puede detectar errores tipográficos cuando los usuarios ingresan su dirección de correo electrónico antes de permitirles registrarse.
- Te permite mantenerte en contacto con tus usuarios: puedes enviarles un correo electrónico cuando caduque su tarjeta de crédito, cuando les envíes recibos o cuando tengas nuevas funciones disponibles, por nombrar algunas razones.
- Garantiza que sus usuarios puedan restablecer su contraseña de forma segura si alguna vez la olvidan: sin una dirección de correo electrónico no hay forma de validar la identidad de alguien aparte de la verificación manual y humana.
- Evita que los usuarios se registren en su sitio web con direcciones de correo electrónico desechables, como las de Mailinator. Los usuarios que se registran en estos servicios generalmente intentan evitar darle su correo electrónico real por razones específicas, como querer abusar de sus funciones freemium, etc. Al asegurarte de que solo permites que se registren usuarios con direcciones de correo electrónico personales o comerciales reales, reduces el riesgo de abuso de tu sitio web.
Sin embargo, donde la verificación de correo electrónico se vuelve compleja es cuando se decide cómo verificar las direcciones de correo electrónico para SU sitio web. Cada sitio web tiene diferentes requisitos y, dependiendo de lo que haga el suyo, es posible que solo desee verificar la dirección de correo electrónico de un usuario de una o dos maneras específicas.
Para ayudar a resolver este problema, recientemente hemos lanzado el paquete email-verifier en el repositorio de paquetes PyPi.
Esta biblioteca de Python le permite verificar fácilmente las direcciones de correo electrónico de varias maneras diferentes y proporciona una verificación flexible (como verá en un momento).
Así que, sin más preámbulos, ¡echemos un vistazo a cómo funciona!
Cree una cuenta Email Verification
Lo primero que debe hacer para verificar las direcciones de correo electrónico utilizando la biblioteca email-verifier es crea una cuenta gratuita para el servicio Email Verification API. Puede hacerlo aquí: https://emailverification.whoisxmlapi.com/signup
Una vez que hayas creado tu cuenta gratuita, podrás utilizar el servicio API para verificar 1.000 direcciones de correo electrónico de forma gratuita. Si quieres hacer más, siempre puedes pagar una pequeña cantidad.
Instale el paquete
Ahora que su cuenta está configurada, lo siguiente que debe hacer es instalar el paquete de Python. Desde la línea de comandos, ejecute el siguiente comando:
$ pip instalar verificador de correo electrónico
Esto descargará e instalará la última versión del paquete de verificación de correo electrónico de PyPi.
Verifique una dirección de correo electrónico
Una vez que haya instalado tanto una cuenta como el paquete, echemos un vistazo a algunos códigos que puede ejecutar para verificar una dirección de correo electrónico de inmediato.
Aquí hay una pequeña cadena de caracteres, 'verify.py'
, que verificará una dirección de correo electrónico utilizando todos los métodos de verificación posibles:
from emailverifier import Cliente
from emailverifier import excepciones
cliente = Client('Tu-api-clave')
probar:
datos = cliente.get("support@whoisxmlapi.com")
# Si llega aquí, significa que el servicio devuelve un código de error HTTP
excepto excepciones.HttpException:
pass
# Si llega aquí, significa que no puede conectarse al servicio
excepto excepciones.GeneralException:
pass
# Si llega aquí, significa que olvidó especificar la clave API
except exceptions.UndefinedVariableException:
pass
# Si llega aquí, significa que especificó un argumento no válido
# (las opciones deben ser un diccionario)
except exceptions.InvalidArgumentException:
pass
excepto:
pass
# Algo más ocurrió, relacionado.Tal vez pulsó CTRL - C
# mientras se ejecutaba el programa, el kernel está matando su proceso, o
# algo más en conjunto.
print(datos)
# Utilice data.json_string para obtener los datos sin procesar en JSON.
# Puede acceder a cualquier campo de respuesta como una propiedad de clase
# convirtiendo el nombre del campo de "camelCase" a "snake_case".
print("Dirección de correo electrónico: " + data.email_address)
print("Formato: " + str(data.format_check))
print("DNS: " + str(datos.dns_check))
print("SMTP: " + str(datos.smtp_check))
print("Catch all: " + str(datos.catch_all_check))
print("Desechable: " + str(data.disposable_check))
print("Libre: " + str(data.free_check))
print("Última fecha de auditoría: " + str(data.audit.audit_updated_date))
Como puede ver, en realidad sólo hay tres pasos para utilizar la biblioteca:
- Importación
'Cliente'
y excepciones del paquete. - Cree un objeto
'Cliente'
dándole la clave de API que creó cuando se registró en el servicio de API. - Ejecute el método
'obtener'
, pasando la dirección de correo electrónico que desea verificar, y un diccionario con opciones y sus valores. Allí está la lista de opciones disponibles:validarDNS
,validateSMTP
,checkCatchAll
,checkFree
,de chequeoDesechable
,_hardRefresh
. La descripción de estas opciones se puede encontrar en nuestra Página de documentación.
Los datos que se imprimen en el ejemplo tendrán un aspecto similar al siguiente:
{
"emailAddress": "support@whoisxmlapi.com",
"formatCheck": "true",
"smtpCheck": "true",
"dnsCheck": "true",
"freeCheck": "false",
"disposableCheck": "false",
"catchAllCheck": "true",
"mxRecords": [
"ALT1.ASPMX.L.GOOGLE.com",
"ALT2.ASPMX.L.GOOGLE.com",
"ASPMX.L.GOOGLE.com",
"ASPMX2.GOOGLEMAIL.com",
"ASPMX3.GOOGLEMAIL.com"
],
"audit": {
"auditCreatedDate": "2018-04-19 18:12:45.000 UTC",
"auditUpdatedDate": "2018-04-19 18:12:45.000 UTC"
}
}
Email address: support@whoisxmlapi.com
Format: True
DNS: True
SMTP: True
Catch all: True
Disposable: False
Free: False
Last audit date: 2018-04-19 18:12:45
Cada valor de objeto devuelto corresponde a diferentes tipos de verificación:
- La opción
catchAllCheck
comprueba si esta dirección de correo electrónico es una dirección «catch-all». Esto se refiere a un tipo especial de dirección que puede recibir correo electrónico para una serie de direcciones distintas. Esto es habitual en empresas en las que si se envía un correo electrónico a test@hi.com y otro correo electrónico a test2@hi.com, ambos irán a la misma bandeja de entrada. - La opción
disposableCheck
comprueba si la dirección de correo electrónico es desechable o no (creada a través de un servicio como Mailinator). Esto le ayuda a comprobar si hay abusos. Este valor seráfalso
si el correo electrónico no es desechable, yverdadero
en caso contrario. - La opción
dnsCheck
comprueba si el dominio de la dirección de correo electrónico, por ejemplo: gmail.com, es un dominio válido. Este valor seráDE ACUERDO
si el dominio es bueno. - La opción
freeCheck
comprobará si la dirección de correo electrónico es de un proveedor de correo electrónico gratuito como Gmail o no. Este valor será'false'
si la dirección de correo electrónico no es gratis, yverdadero
en caso contrario. - La opción
formatCheck
le permite saber si hay algún error de sintaxis en la dirección de correo electrónico. Se trata de una comprobación básica que se realiza para detectar errores tipográficos simples o errores importantes. Este valor seráfalso
si no hay errores, yverdadero
en caso contrario.
En segundo plano, el servicio API se encarga de todos estos tipos de comprobaciones de verificación por usted de diversas maneras. Hablaré de esto en otro artículo.
Personalización de Email Verification
Como mencioné antes, el ejemplo de código anterior le mostró cómo validar una dirección de correo electrónico con todos los métodos posibles de verificación, pero puede que no desee hacer esto para cada caso.
La verificación de correo electrónico puede ser lenta. Cada tipo de verificación lleva poco tiempo (fracciones de segundo), pero cuando se realizan todas las comprobaciones, ese tiempo puede acumularse.
Si su sitio web solo necesita verificar una dirección de correo electrónico para asegurarse de que puede recibir correos, por ejemplo, puede decirle al paquete de verificación de correo electrónico que solo realice esa verificación. La biblioteca de verificación de correo electrónico es completamente flexible: puede habilitar o deshabilitar cualquier tipo de verificación que desee.
Así es como funciona:
client.get("support@whoisxmlapi.com", {
'validateSMTP': 0,
'_hardRefresh': 1,
#. . . .
})
Al ejecutar el método
'obtener'
,puede utilizar un diccionario con opciones (como se muestra arriba) que afectan directamente a los tipos de comprobaciones que se realizan. Puede utilizarlos según sea necesario.
Mejorar el flujo de registro de usuarios
Ahora que ha visto cómo puede verificar las direcciones de correo electrónico utilizando la biblioteca email-verifier, es posible que desee modificar el proceso de registro de su sitio web para hacer uso de ella.
La mejor manera de hacer esto es bastante sencilla. Cuando un usuario rellena su formulario de registro y lo envía, debe:
- Recibir los datos del formulario en su servidor web
- Analizar los datos de registro del usuario, incluida su dirección de correo electrónico
- Verificar inmediatamente la dirección de correo electrónico del usuario utilizando la biblioteca email-verifier
- Mostrar un error al usuario si su correo electrónico no es válido y pedirle que vuelva a intentarlo
- Si todo está bien, crear la nueva cuenta del usuario e iniciar su sesión
Al seguir estos pasos, mejorará en gran medida el proceso de registro de su sitio web al detectar errores tipográficos y en los primeros estadios, antes de que sea demasiado tarde para corregirlos.
Resumen
En conclusión: verificar las direcciones de correo electrónico de sus usuarios puede ser una forma sencilla de mejorar la experiencia de usuario para su sitio web.
Si necesita verificar una dirección de correo electrónico, el nuevo email-verifier es la herramienta perfecta, ya que gestiona muchos tipos diferentes de validación y es extremadamente flexible.
Si tiene alguna pregunta, ¡escríbanos!