2010-06-11 12 views
12

Tengo un cliente con 5000 correos electrónicos de una lista anterior que tiene y quiere promocionar sus servicios. Él quiere saber qué correos electrónicos en la lista siguen siendo válidos. Quiero verificarlos por él, sin enviar correos electrónicos de 5K al azar y luego aparecer como spammer o algo así. Ideas?¿Cómo verifico si una dirección de correo electrónico es válida sin enviarle nada?

+0

http://stackoverflow.com/search?q=validate+email –

+1

@Brendan Long Parece que ya tienen un formato válido de mensajes de correo electrónico, y que él está tratando de verificar si la cuenta realmente existe. –

+0

Oh. Olvidalo entonces. –

Respuesta

6

bucabay's respuesta es el camino a seguir. Lo que básicamente hace una biblioteca como esa es verificar el registro DNS existente para servidores (correo) en dominios específicos (A, MX o AAAA). Después de eso, hace lo que se denomina verificación de devolución de llamada. Ahí es donde se conecta al servidor de correo, le dice que desea enviar a una dirección de correo electrónico en particular y ver si dicen OK.

Para la verificación de devolución de llamada, debe tener en cuenta que los servidores de listas grises dicen que todo está bien, por lo que no hay garantía del 100% sin enviar los correos electrónicos. Aquí hay un código que utilicé cuando hice esto manualmente. Es un parche en el analizador de direcciones de correo electrónico de here.

# 
    # Email callback verification 
    # Based on http://uk2.php.net/manual/en/function.getmxrr.php 
    # 

    if (strlen($bits['domain-literal'])){ 
     $records = array($bits['domain-literal']); 
    }elseif (!getmxrr($bits['domain'], $mx_records, $mx_weight)){ 
     $records = array($bits['domain']); 
    }else{ 
     $mxs = array(); 

     for ($i = 0; $i < count($mx_records); $i++){ 
      $mxs[$mx_records[$i]] = $mx_weight[$i]; 
     } 

     asort($mxs); 

     $records = array_keys($mxs); 
    } 

    $user_okay = false; 
    for ($j = 0; $j < count($records) && !$user_okay; $j++){ 
     $fp = @fsockopen($records[$j], 25, $errno, $errstr, 2); 
     if($fp){ 
      $ms_resp = ""; 

      $ms_resp .= send_command($fp, "HELO ******.com"); 
      $ms_resp .= send_command($fp, "MAIL FROM:<>"); 

      $rcpt_text = send_command($fp, "RCPT TO:<" . $email . ">"); 
      $ms_resp .= $rcpt_text; 

      $ms_code = intval(substr($rcpt_text, 0, 3)); 
      if ($ms_code == 250 || $ms_code == 451){ // Accept all user account on greylisting server 
       $user_okay = true; 
      } 

      $ms_resp .= send_command($fp, "QUIT"); 

      fclose($fp); 
     } 
    } 

return $user_okay ? 1 : 0; 
+3

Tenga cuidado con la verificación de devolución de llamada/verificación de la dirección del remitente. Existe un debate sobre su utilidad (consulte http://en.wikipedia.org/wiki/Callback_verification referencias, por ejemplo) y algunos RBL le incluirán _just_ para hacer verificaciones de la dirección del remitente. – sync

+0

Esto se ve extremadamente útil KTC - ¿hay alguna manera de que pueda usarlo con el código al que se hace referencia en la respuesta de Bucabay? – Matt

2

Tendrá que enviarlas por correo electrónico al menos una vez.

  • Cree una nueva lista de correo. Envíe a la lista anterior un correo electrónico con un enlace en el que deben hacer clic para continuar recibiendo mensajes (volver a suscribirse).
  • Envíales a todos un correo electrónico y recoge todos los rebotes de respuesta en una cuenta de correo electrónico real, luego purga los correos electrónicos devueltos de tu lista principal.
  • Envíeles todos un correo electrónico en HTML, y una de las imágenes se aloja de forma remota y requiere una identificación única para solicitarla que configure en cada correo electrónico. Cuando su servidor web devuelve esa imagen a su cliente, puede considerar ese correo electrónico como activo. Esto se llama web bug, y solo funcionará si la persona carga automáticamente imágenes remotas en su cliente.
+1

La validación de imágenes no siempre funciona, ya que la mayoría de las organizaciones (ya sé) suprimen las imágenes eliminadas de forma predeterminada. Su segunda opción está bien ... es una buena manera de hacer que los usuarios opten por correspondencia adicional. –

+0

Sí, podría ser solo uno de varios métodos que el OP podría utilizar para determinar correos electrónicos obsoletos. Moví la opción n. ° 2 al n. ° 1 :) –

3

Creo que debe enviar los correos electrónicos para averiguarlo. Además, esto es más o menos lo que es un spammer, por lo tanto, es la razón por la que se pone en las listas de spammers. Sin embargo, enviar estallidos te ayudará a ocultar este hecho.

+0

Se le pide al OP una forma sin enviar correos electrónicos. Esto es muy útil para verificar la existencia de un correo electrónico provisto por el visitante – SCC

0

Puede usar un servicio pago como Kickbox para hacer esto también.

0

Puede considerar el servicio MailboxValidator http://www.mailboxvalidator.com/ que debería ser adecuado para sus necesidades. Puede obtener un plan masivo en el que puede cargar un archivo CSV que contenga su lista de correo electrónico u obtener el plan API si necesita integraciones programáticas.

Cuestiones relacionadas