Cómo verificar una dirección de correo electrónico en PHP
En este artículo voy a explicarle la mejor manera posible de verificar direcciones de correo electrónico y cómo mejorar el procedimiento de registro de usuarios para su sitio web PHP.
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 introducen su dirección de correo electrónico y solicitarles que los corrijan antes de permitir el registro.
- Le permite mantenerse en contacto con sus usuarios: puede enviarles un correo electrónico cuando caduque su tarjeta de crédito, cuando haya facturas, cuando haya nuevas funciones disponibles, etc.
- 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 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 una razón específica: tal vez quieran abusar de sus funciones freemium, etc. Al asegurarse de que a la hora del registro solo permite usuarios con datos personales reales, o direcciones de correo electrónico comerciales, reduce el riesgo de abuso de su sitio web.
Sin embargo, donde la verificación de correo electrónico se vuelve compleja es decidir 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 su sitio web, puede solo desea 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 lanzamos la biblioteca email-verifier en Packagist.
Esta biblioteca PHP le permite verificar fácilmente las direcciones de correo electrónico de varias maneras diferentes y proporciona una verificación flexible (como verá enseguida).
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 haya creado su cuenta gratuita, podrá utilizar el servicio API para verificar 1.000 direcciones de correos electrónico de forma gratuita. Si quiere verificar más, siempre puede hacerlo pagando una cantidad muy pequeña.
Instale el paquete
Ahora que su cuenta está configurada, lo siguiente que debe hacer es instalar el paquete PHP. En la línea de comandos, ejecute el siguiente comando:
$ composer require whois-api/email-verifier
Esto descargará e instalará la última versión del paquete email-verifier desde Packagist.
Verifique una dirección de correo electrónico
Ahora que tiene una cuenta y el paquete ya está instalado, echemos un vistazo a algunas muestras de código que puede utilizar para verificar una dirección de correo electrónico inmediatamente.
Aquí hay una pequeña cadena de caracteres, verify.php
, la cual verificará una dirección de correo electrónico utilizando todos los métodos de verificación posibles:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use WhoisApi\EmailVerifier\Builders\ClientBuilder;
$builder = new ClientBuilder();
$client = $builder->build('Your API key');
try {
/* Without refreshing */
echo print_r($client->get('support@whoisxmlapi.com', ['_hardRefresh']), true);
echo PHP_EOL;
} catch (\Throwable $exception) {
echo "Error: {$exception->getCode()} {$exception->getMessage()}" . PHP_EOL;
}
Como puede ver, en realidad solo hay tres pasos para utilizar la biblioteca:
- Importe el archivo de carga automática de Composer y un client builder de la biblioteca.
- Cree un objeto
ApiClient
al dárselo a la clave de API que creó al registrarse para el servicio API. - Ejecute el método
OBTENER
, incluya la dirección de correo electrónico que desea verificar y una matriz con opción que debe estar deshabilitada. Todas las opciones disponibles están habilitadas de forma predeterminada. Esta es la lista de opciones disponibles:validarDNS
,validateSMTP
,checkCatchAll
,checkFree
,de chequeoDesechable
,_hardRefresh
. La descripción de estas opciones se puede encontrar en nuestra documentación página.
Los datos del ejemplo tendrán un aspecto parecido a esto:
Objeto WhoisApiEmailVerifier\Models\Response
(
[emailAddress] => support@whoisxmlapi.com
[formatCheck] => 1
[smtpCheck] => 1
[dnsCheck] => 1
[freeCheck] =>
[disposableCheck] =>
[catchAllCheck] => 1
[mxRecords] => Array
(
[0] => ALT1.ASPMX.L.GOOGLE.com
[1] => ALT2.ASPMX.L.GOOGLE.com
[2] => ASPMX.L.GOOGLE.com
[3] => ASPMX2.GOOGLEMAIL.com
[4] => ASPMX3.GOOGLEMAIL.com
)
[audit] =>
[auditModel:protected] => Objeto WhoisApiEmailVerifier\Models\Audit
(
[auditCreatedDate] => Objeto Carbon\Carbon
(
[date] => 2018-09-21 15:52:51.000000
[timezone_type] => 3
[timezone] => UTC
)
[auditUpdatedDate] => Objeto Carbon\Carbon
(
[fecha] => 2018-09-21 15:52:51.000000
[timezone_type] => 3
[timezone] => UTC
)
)
)
disposableCheck
y freeCheck
tienen un valor invisible falso
(es de
tipo booleano).
Cada valor de objeto devuelto corresponde a un tipo diferente 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 posibles métodos de verificación, pero es posible que no siempre dese hacer esto.
La verificación por correo electrónico puede ser lenta. Cada tipo de verificación requiere una pequeña cantidad de tiempo (fracciones de segundo), pero al ir realizándose todas las comprobaciones, el tiempo puede ir acumulándose.
Si su sitio web solo necesita verificar una dirección de correo electrónico para asegurarse de que puede recibir correo electrónico; por ejemplo, puede configurar el paquete email-verifier para que solo realice esa comprobación. La biblioteca email-verifier es Increíblemente flexible: puede activar o desactivar cualquier tipo de comprobación que desee.
Así es como funciona:
$client->get('support@whoisxmlapi.com', [ '_hardRefresh', 'validateSMTP', ... ] )
Al ejecutar el método
OBTENER
, puede pasar una matriz de opciones deshabilitadas (como se muestra arriba) que
impactan directamente en los tipos de controles que se realizan. Puede utilizarlas como mejor le convengan.
Mejorar el flujo de registro de usuarios
Ahora que ha visto cómo puede verificar direcciones de correo electrónico cin la biblioteca email-verifier, es probable 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 completa 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 flujo de registro de su sitio web al capturar errores tipográficos y errores de los usuarios en los primeros estadios del proceso, 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!