2010-03-01 190 views
7

當人們註冊到我的網站時,我不想給他們發送驗證電子郵件,我只想檢查該電子郵件是否存在。有沒有辦法做這樣的事情?java:我如何驗證電子郵件地址有效,而無需發送確認電子郵件?

使用apache-tomcat和java作爲我的主要編程語言。

非常感謝!

+1

您無法強制任何電子郵件服務器確認存在有效的郵箱,並且有人查看它。 – 2010-03-01 17:33:58

回答

9

您可以最高使用regex檢查地址是否在語法上有效和/或查詢MX records如果該域名有效,但仍不能保證該電子郵件地址是合法的並且屬於有問題的註冊人。真的沒有比發送真實電子郵件並在短時間內等待確認更可靠的方法。

+0

這不是100%正確的答案 – 2010-03-08 06:26:56

+1

@fuzzy:也沒有100%可靠的方式,電子郵件地址屬於有問題的用戶,這是永遠不會到來的。我在你的答案中檢查了網站,輸入了幾個我知道存在的地址,其中一些地址因爲服務器不支持VRFY而失敗。我不會浪費那麼多時間來驗證網絡上其他地方的電子郵件地址。只需發送驗證郵件,然後等待確認:) – BalusC 2010-03-08 11:22:14

+0

您可以連接發送RCPT消息,然後RSET,您沒有看到我的解決方案實際執行的操作。 – 2010-03-08 13:41:03

15

不可以。無法判斷電子郵件地址是否指向有效的目的地。您可以檢查基本語法,並且域名在DNS中有記錄,但僅此而已。

+1

更具體地說:「...在DNS中有一個** MX **記錄...」 – Dolph 2010-03-01 14:13:09

+2

我不同意。您可以將電子郵件發送到沒有MX記錄的域名。 – bmargulies 2010-03-01 14:32:41

+0

你會怎麼做? – 2010-03-01 17:08:03

1

如果你只是想驗證它看起來像一個有效的電子郵件地址,有很多樣本正則表達式將驗證。如果您想驗證用戶是否擁有該電子郵件地址的控制權,您需要向其發送一些信息並製作一個唯一的響應來驗證它。

5

相反,一些無知的答案你可以嘗試連接到MX服務器,並使用VRFY命令看看服務器是否支持它。這裏是一個website,這將爲你做這個例子。如果你看看它與MX服務器的交換,它實際上會嘗試發送一封電子郵件,但在實際發送之前進行重置。用我的電子郵件地址進行測試,但我沒有收到電子郵件。所以是的,你可以做別人所說的你不能做的事。使用您認識的適用於您的域的地址,然後使用您不支持的地址。最後一個RCTP TO命令將得到550。這就是你知道它不存在的方式。

6

我只是想權衡並說,儘管你不願意這樣做,但請發送電子郵件並強制用戶確認他們已經控制它,然後才允許將該電子郵件地址與帳戶關聯使用您的網站。爲什麼?因爲沒有這樣做,出於任何原因,意味着用戶可以使用不屬於他們的電子郵件地址註冊帳戶。他們可能會意外地這樣做,或者他們可能會這樣做是非常有目的的(例如,由於許多原因而爲其他賬戶簽名);這不是猶太教,允許它的網站可以向他們的ISP報告。

(我說這是Gmail帳戶的所有者,每月至少有兩到三次在某個網站註冊了一個帳戶,該帳戶不強制用戶以這種方式確認他們的電子郵件地址。這太讓人煩惱了,它會讓你的帳戶從有問題的網站中刪除,我現在已經開始恢復任何密碼,登錄帳戶,然後將電子郵件地址更改爲「SOMEDUMBFUCKDOESNTKNOWHISOWNEMAILADDRESS @ gmail .com「或類似的東西......它很有趣,但我懷疑你希望這種情況發生在你的網站上。)

+4

這裏的重點不在於「強迫人們確認一個電子郵件地址」,而是「不要發送電子郵件到未經確認的地址」。您可以在確認電子郵件之前創建帳戶,提供您不發送任何電子郵件(除了確認嘗試)或阻止其他用戶嘗試確認該地址。 – 2010-03-01 17:31:06

+0

感謝您的信息:) – ufk 2010-03-02 11:30:57

1

您可以使用openid服務檢查valover電子郵件地址爲stackoverflow。

http://openid.net/

0

Email Verification services在驗證電子郵件地址非常有幫助。它們大多執行6級驗證,如語法驗證,域MX記錄檢查,基於角色的帳戶檢測,一次性電子郵件地址(DEA)檢測,HoneyPot /垃圾郵件追蹤檢測和深層SMTP驗證。

其中大多數提供了API集成,因此,您可以直接從您的應用程序驗證電子郵件地址。

相關問題