Saber si un correo existe o no en Node.js

publicado por: Anonymous

Estoy haciendo un API que recibe un JSON con varia informacion de personas, dentro de esos un correo, yo necesito validar si el correo tiene el formato correcto, si el dominio es correcto y si el correcto efectivamente existe en ese dominio.

Este es el codigo que actualmente tengo y me dice si existe el dominio y si esta bien escrito pero necesito saber si ese correo existe tambien!!

AYUDA!!

const dns = require('dns');
function Validar_email(email){
  let domain = email.split('@')[1];  
      dns.resolve(domain, 'MX', function(err, addresses) {    
       if (err) {
          console.log("Error")
          console.log(err)    
      } else if (addresses && addresses.length > 0) {      
         console.log("Correcto")
      }
        })
      }

solución

Te cuento mi experiencia de trabajo, con 2 soluciones:

SOLUCIÓN 1

Para validar si un correo existe, lo que he realizado es enviarle un correo de confirmación al cliente correspondiente, dicha confirmación tiene un período de tiempo, por lo cual puede suceder dos cosas:

  1. Si el cliente confirma en el período del tiempo: Actualiza la información correspondiente en base de datos.
  2. Si el cliente no confirma: Elimino todos los registros en relación del cliente (Debido que no existe dicho correo), cabe mencionar que la eliminación consta en una bandera de estado la cual lo asigno con valor true (Eliminado).

SOLUCION 2

Sin embargo existe servicios de mensajería (Como por ejemplo: SendGrid), la cual contiene un API integrada, en la cual se puede implementar la siguiente solución:

  1. Envía un correo a partir del host que te brinda el servicio (Cabe mencionar que cada correo estará identificado por un identificador único).
  2. Posteriormente, puedes consultar el API del servicio de mensajería, y verificar el estado del correo (Entre ellas se puede estar: Enviando, Enviado, recibido, leído, entre otro más…).

OJO: En ambas soluciones se debe enviar un correo.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *