2012-11-19 70 views
6

有什麼方法可以驗證電子郵件ID是否存在於域中?如何檢查電子郵件ID是否存在於域中,而不使用java發送任何郵件

我有以下功能:它只檢查有效域名,但我需要檢查域中的有效電子郵件地址,而不發送任何郵件。

public boolean isValidEmailAddress(String email) { 
    boolean result = true; 

    try { 
     InternetAddress emailAddr = new InternetAddress(email); 
     emailAddr.validate(); 

    } catch (AddressException ex) { 
     result = false; 
    } 
    return result; 
} 
+0

你的意思是來自你的內部組織的電子郵件?如果是這樣,知道使用的郵件服務器將是有用的。 – SJuan76

回答

1

聽起來像是你需要SMTP VRFY command

此命令將要求接收SMTP服務器驗證一個 給定電子郵件的用戶名是有效的。 SMTP服務器將回複用戶的登錄名 。此功能可以在sendmail 中關閉,因爲允許它可能是一個安全漏洞。可以使用VRFY命令 來探測系統上的登錄名。有關關閉此功能的信息,請參閱 下方的安全部分。

注意上面的安全問題。

+0

謝謝Brian Agnew的回覆。但是如何在java函數中使用這個命令。 – ashu

+0

您可以在SMTP服務器上創建一個到端口25的連接(使用telnet嘗試),然後執行'VRFY地址' –

4

這裏是一個源代碼,可以做很多類型的驗證,我已經使用了好幾年:

http://www.rgagnon.com/javadetails/java-0452.html

注:參見功能isAddressValid()在頁面完全驗證。

+0

謝謝Alexandre Lavoie的回覆。我提到您的鏈接,它只檢查有效域,但不檢查有效電子郵件地址 。 – ashu

+0

函數isAddressValid()做所有的測試,也嘗試連接到@Brian Agnew告訴的SMTP服務器。但謹慎使用,它並不總是工作!通常我只驗證該域中的電子郵件語法,域名存在和MX存在。 –

相關問題