2010-06-11 9 views
12

Ho un client con 5000 e-mail da una vecchia lista che ha che vuole promuovere i suoi servizi a. Vuole sapere quali e-mail sulla lista sono ancora valide. Voglio controllarli per lui - senza inviare 5K email in modo casuale e quindi essere elencato come spammer o qualcosa del genere. Idee?Come posso verificare se un indirizzo e-mail è valido senza inviare nulla ad esso?

+0

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

+1

@Brendan Long Sembra che siano già email formattate correttamente e che stia cercando di verificare se l'account esiste davvero. –

+0

Oh. Non importa allora. –

risposta

6

bucabay's la risposta è la via da seguire. Ciò che una libreria del genere essenzialmente fa è controllare il record DNS esistente per i server (di posta) in domini specifici (A, MX o AAAA). Successivamente, esegue la cosiddetta verifica della richiamata. Ecco dove ti connetti al server di posta, dillo che vuoi inviare ad un particolare indirizzo email e vedere se dicono OK.

Per la verifica della richiamata, è necessario notare che i server greylisting dicono OK a tutto, quindi non è possibile garantire il 100% senza inviare effettivamente le e-mail. Ecco un codice che ho usato quando l'ho fatto manualmente. È una patch sul parser dell'indirizzo email da 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

Attenzione per la verifica della richiamata/verifica dell'indirizzo del mittente. C'è un dibattito sulla sua utilità (vedi i riferimenti http://en.wikipedia.org/wiki/Callback_verification per esempio) e alcuni RBL ti includeranno _just_ per le verifiche dell'indirizzo del mittente. – sync

+0

Questo sembra estremamente utile KTC - c'è un modo in cui posso usarlo con il codice di riferimento nella risposta di Bucabay? – Matt

2

Dovrai inviarli via email almeno una volta.

  • Creare un nuovo elenco di e-mail. Invia alla vecchia lista un'e-mail con un link su cui devono fare clic per continuare a ricevere messaggi (ri-iscriviti).
  • Invia loro tutte le email e raccogli tutte le risposte rimbalzate su un vero account di posta elettronica, quindi elimina quelle rimbalzate dalla tua lista principale.
  • Invia tutte le e-mail HTML e una delle immagini è ospitata in remoto e richiede un ID univoco per richiederlo impostato su ciascuna e-mail. Quando il tuo server web restituisce quell'immagine al loro cliente, puoi quindi considerare quell'email come attiva. Questo è chiamato web bug e funzionerà solo se la persona carica automaticamente le immagini remote nel proprio client.
+1

La convalida dell'immagine non funziona sempre, poiché la maggior parte delle organizzazioni (che conosco) sopprime le immagini per impostazione predefinita. La tua seconda opzione va bene ... è un modo carino per convincere gli utenti ad aderire ad ulteriori corrispondenza. –

+0

Sì, potrebbe essere solo uno dei vari metodi che l'OP potrebbe voler impiegare per determinare le email stantie. Ho spostato l'opzione da # 2 a # 1 :) –

3

Penso che sia necessario inviare le e-mail per scoprirlo. Inoltre, questo è esattamente ciò che uno spammer è, quindi la ragione per essere inserito negli elenchi di spammer. L'invio a raffiche ti aiuterà a nascondere questo fatto però.

+0

All'OP viene richiesto un modo senza inviare e-mail. Questo è molto utile per verificare l'esistenza di un'e-mail fornita dal visitatore – SCC

0

È possibile utilizzare un servizio a pagamento come Kickbox anche per questo.

0

È possibile considerare il servizio MailboxValidator http://www.mailboxvalidator.com/ che dovrebbe essere adeguato alle proprie esigenze. Puoi ottenere un piano di massa in cui puoi caricare un file CSV contenente la tua mailing list o ottenere il piano API se hai bisogno di integrazioni programmatiche.

Problemi correlati