2013-03-21 58 views
4

我們的質量檢查提交了一個錯誤消息,稱該電子郵件地址的頂級域名不能爲一個字符。頂級域名的電子郵件地址驗證

[email protected] 

我很難研究標準。有人可以確認設置頂級域最小長度是否是正確的做法?

+1

電子郵件驗證很難! z和其他東西是有效的。 – powtac 2013-03-21 00:34:26

+0

驗證電子郵件地址的最佳方式是發送驗證電子郵件。任何其他方法不能保證地址是有效的,只是它**可以是有效的,甚至是主觀的。 – 2013-03-21 00:38:26

+0

標準說什麼?它是否說有一個字符的TLD是有效的? – riship89 2013-03-21 00:40:51

回答

2

驗證電子郵件地址的規則非常複雜,因爲它們很可能在實施過程中出錯。

而不是驗證的電子郵件地址,考慮驗證它,而不是直接:http://davidcel.is/blog/2012/09/06/stop-validating-email-addresses-with-regex/

與你的情況的問題,是有一個非常現實的可能性,ICANN可能會推出單字母頂級域名,並個別DNS標籤可以長度爲1,實際上「bar.z」是一個有效的電子郵件地址域名,如果從DNS樹/組織內以子域名的形式發送的話(例如,如果郵件服務器是smtp.mycompany.org和我還爲bar.z.mycompany.org定義了一個MX服務器)。

1

請注意,我爲此寫了一個小型C庫文件libtld。它可能對你有用。請注意,支持全球所有頂級域名所需的數據量相當驚人,所以我不會在Javascript中實現這些。話雖如此,也許如果你可以壓縮數據更多...該庫還包括一個PHP擴展,所以你可以直接使用PHP的功能和結果。

0

到目前爲止,電子郵件頂級域名的長度應該位於[2,6],但它並不是一個恆定的標準,因爲一切都在變化。驗證電子郵件非常困難,您不知道電子郵件地址是否可以在您嘗試向其發送電子郵件之前實際接收電子郵件,儘管它符合電子郵件正式標準。