2011-01-12 15 views
5

Come verificare se esiste un ID e-mail o no con PHP? e per ottenere informazioni sul proprietario dell'ID di posta elettronica? è possibile ottenere le informazioni sul proprietario dell'ID di posta elettronica? Devo lavorare con alcuni protocolli come POP? Mi aiuti per favore.Come verificare se esiste un ID e-mail?

+1

Sto assumendo per "id", vuoi dire "indirizzo". Perchè vuoi fare questo? Mentre sono sicuro che ci sono un sacco di casi d'uso validi, mi sembra spam-ish. – inkedmn

+0

@inkedmn: desidero utilizzarlo nella pagina di registrazione del sito Web per verificare gli indirizzi e-mail in modo da prevenire spam e registrazioni false! assolutamente per il rilevamento di frodi! – brainless

+0

L'invio di un link di attivazione riguarda la tua unica opzione. – drudge

risposta

12

consente di dire un utente invia il seguente indirizzo email:

I controlli si vorrebbe svolgere in modo sono in questo modo:

  • L'indirizzo è valido
  • Fa il dominio gestiscono un mail server/Record MX
  • E 'nella lista nera

In primo luogo all'interno di PHP è possibile convalidare una e-mail utilizzando filter_var in questo modo:

$is_valid = filter_var("[email protected]",FILTER_VALIDATE_EMAIL); 

In secondo luogo si vorrebbe verificare se il dominio gestisce un server di posta elettronica, per fare questo è possibile controllare i record DNS per MX in questo modo:

$has_dns_mx_record = checkdnsrr("stackoverflow.com","MX"); 

Si potrebbe anche voler aprire la porta sul dominio in questo modo:

$socket = fsockopen("stackoverflow.com", 25); 
$mail_running = (bool)$socket; 
fclose($socket); 

È inoltre possibile controllare per vedere se il server SMTP risponde con un 550, vale a dire di posta elettronica non esiste, in questo modo:

SEND > helo hi 
250 stackoverflow.com 

SEND > mail from: <[email protected]> 
250 2.1.0 Ok 

SEND > rcpt to: <[email protected]> 
> 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown in local recipient table 

Guardando quanto sopra è possibile inviare comandi a un server smtp valido come helo>mail from <...> e controllare la risposta 550.

Date un'occhiata qui per alcuni codici di risposta: http://www.greenend.org.uk/rjk/2000/05/21/smtp-replies.html

Inoltre si dovrebbe prendere nota di commento di @ slebetman affermando che una piccola percentuale di mail> server sono configurati per rispondere 550 per evitare che il sniffing fuori di indirizzi email validi.

Il controllo lista nera è piuttosto semplice, si sarebbe solo trovare una DNSBL Server decente che fornisce un gateway per voi Verifica il dominio per vedere se è stato inserito nella lista nera, se ne ha l'e-mail potrebbe essere valido e attivo ma è stato contrassegnato come spam, quindi è un email non affidabile e si dovrebbe richiedere un indirizzo email alternativo per autorizzare

Queste sono alcune delle tecniche di convalida utilizzate per convalidare un indirizzo email, ora ci sono molti più metodi di validazione ma questi sono alcuni dei principali.

+4

Ha una probabilità del 99% di funzionare. Ci sono alcuni server di posta che sono configurati per non restituire mai 550 risposte in modo che gli script non possano annusare un indirizzo email valido. Il mio server di posta elettronica è configurato in questo modo. Quindi è la posta di Yahoo. – slebetman

+0

Ottimo punto, non ci ho mai pensato. – RobertPitt

13

Non esiste un modo sicuro al 100% di sapere se un indirizzo e-mail è valido senza l'invio di e-mail e l'utente risponde in qualche modo. Ci sono controlli che puoi fare per aumentare le possibilità di sapere se un indirizzo email è valido o meno. Puoi fare una ricerca DNS e vedere se il dominio ha un record MX. Esistono anche parti del protocollo SMTP che è possibile utilizzare, ma nulla impone che un server SMTP risponda a questi comandi. Centralops.net fornisce un prodotto che può aiutare, ma, ancora una volta, non è garantito.

Se ci fosse un modo sicuro per gestirlo, allora perché praticamente ogni sito che ha una funzione di registrazione ti richiede di rispondere a un'email in qualche modo? La domanda non è pensata per essere sniffata; Spero solo che ti aiuti a vedere che altri siti non sono stati in grado di eseguire lo stesso controllo che stai chiedendo.

HTH

+1

mi sono imbattuto in un link mentre su Google. http://www.verifyemailaddress.org/. come avrebbero potuto farlo? penso che l'abbiano fatto bene – brainless

+1

Controlla la mia risposta @brainless. – RobertPitt

+1

Ma non c'è modo di essere positivo. Puoi fare i passi delineati da RobertPitt, alcuni di quelli che elenca nella mia risposta (anche se lui spiega in maggiore dettaglio), ma alla fine della giornata, l'unico modo per saperlo è in realtà inviando un'email, e facendo l'utente risponde ad esso in qualche modo. Alcuni server SMTP ti diranno che l'indirizzo email non esiste immediatamente, ma altri semplicemente accettano l'e-mail e poi si estinguono nell'etere. Molti server SMTP non rispondono al comando di chiedere se esiste un indirizzo email. L'hanno disattivato per scoraggiare lo spamming. –

Problemi correlati