2010-03-01 8 views
7

quando le persone si registrano al mio sito web non voglio inviare loro una e-mail di verifica, voglio solo controllare se esiste questa e-mail. c'è un modo per fare una cosa del genere?java: come posso verificare che un indirizzo e-mail sia valido senza inviare un'e-mail di conferma?

utilizzando apache-tomcat e java come linguaggio di programmazione principale.

grazie mille!

+1

Non è possibile forzare alcun server di posta elettronica per confermare che una cassetta postale valida esista e qualcuno la guardi. –

risposta

9

È possibile utilizzare il valore massimo regex per verificare se l'indirizzo è sintatticamente valido e/o cercare lo MX records se il dominio è valido, ma ciò non garantisce che l'indirizzo di posta elettronica sia legittimo e appartenga al registrante in questione . Non c'è davvero un modo più affidabile di inviare un'e-mail di verifica e in attesa di conferma in un breve lasso di tempo.

+0

questa non è la risposta corretta al 100% –

+1

@fuzzy: Non esiste anche un modo affidabile al 100% che l'indirizzo di posta elettronica appartenga all'utente in questione e questo non verrà mai. Ho controllato il sito nella tua risposta, ho inserito diversi indirizzi, so che esistono e alcuni di loro sono falliti perché il server non supporta VRFY. Non perderei tanto tempo a verificare l'indirizzo email da qualche altra parte sulla rete. Basta inviare un'e-mail di verifica e attendere la conferma :) – BalusC

+0

è possibile connettersi inviare un messaggio RCPT e quindi RSET esso, non hai guardato ciò che la mia soluzione in realtà fa. –

15

No. Non è possibile stabilire se un indirizzo di posta elettronica punta a una destinazione valida. Puoi controllare la sintassi di base e che il dominio ha un record in DNS, ma questo è tutto.

+1

In particolare: "... ha un record ** MX ** in DNS ..." – Dolph

+2

Non sono d'accordo. Puoi inviare email a un dominio senza record MX. – bmargulies

+0

come lo faresti? –

1

Se si desidera verificare che sembra un indirizzo email valido, ci sono molti esempi di Regex che lo verificheranno. Se si desidera verificare che l'utente abbia il controllo dell'indirizzo email, è necessario inviare qualcosa e creare una risposta univoca per verificarlo.

5

in contrasto con alcune delle risposte ignoranti si può provare e connettersi a un server MX e utilizzare il comando VRFY per vedere se il server lo supporta. Ecco un website che farà questo per te come esempio. Se si guarda al suo scambio con il server MX, in realtà prova a inviare e-mail, ma esegue un RESET prima di inviarlo effettivamente. Provarlo con il mio indirizzo email funziona ma non ricevo un'email. Quindi sì, PUOI fare quello che tutti gli altri stanno dicendo che non puoi fare. Utilizza un indirizzo che sai funzionare per il tuo dominio, quindi utilizza quello che non è supportato. Otterrai un 550 sull'ultimo comando RCTP TO. È così che sai che non esiste.

6

Volevo solo ponderare e dire che, nonostante la tua riluttanza a farlo, PER FAVORE invia un'email e costringi l'utente a confermare di averne il controllo prima di consentire che quell'indirizzo email venga utilizzato in associazione con un account su il tuo sito. Perché? Perché non farlo, per qualsiasi motivo, significa che gli utenti possono registrarsi per account utilizzando indirizzi e-mail che non sono i loro. Potrebbero farlo in modo accidentale, oppure potrebbero farlo in modo molto esplicito (ad es. Firmare altri account per un numero qualsiasi di motivi); questo non è solo kosher, e siti web che consentono di essere segnalati ai loro ISP.

(Dico questo come proprietario di un account Gmail che, almeno due o tre volte al mese, è registrato per un account in un sito Web che non obbliga gli utenti a confermare i propri indirizzi di posta elettronica in questo modo. È irritante, e spende il me per ottenere l'account rimosso dal sito Web incriminato. Ora ho preso il recupero delle password che posso, l'accesso all'account e quindi la modifica dell'indirizzo email a "SOMEDUMBFUCKDOESNTKNOWHISOWNEMAILADDRESS @ gmail .com "o qualcosa del genere ... è un po 'divertente, ma dubito che tu voglia che ciò accada sul tuo sito web.)

+4

Il punto importante qui non è tanto "forzare le persone a confermare un indirizzo email" ma "non inviare email a indirizzi non confermati". È possibile creare account prima che l'e-mail sia confermata, fornire di non inviare e-mail (ad eccezione del tentativo di conferma) o impedire ad altri utenti di tentare di confermare tale indirizzo. –

+0

grazie per l'informazione ragazzi :) – ufk

1

È possibile utilizzare il servizio openid per verificare gli indirizzi email validi come lo stackoverflow.

http://openid.net/

0

Email Verification services sono molto utili per la convalida indirizzo e-mail. La maggior parte di questi esegue 6 livelli di verifica come la convalida della sintassi, il controllo del record MX del dominio, il rilevamento dell'account basato sul ruolo, il rilevamento dell'indirizzo e-mail (DEA), il rilevamento di traccia HoneyPot/Spam e la verifica SMTP a livello profondo.

Molti di questi offrono l'integrazione API, quindi è possibile convalidare direttamente gli indirizzi e-mail dalla propria applicazione.