Dot-Net
如何使用 .NET Framework 驗證電子郵件地址格式?
我想要一個函式來測試字元串是否像電子郵件地址一樣格式化。
.NET 框架內置了什麼來做到這一點?
這有效:
Function IsValidEmailFormat(ByVal s As String) As Boolean Try Dim a As New System.Net.Mail.MailAddress(s) Catch Return False End Try Return True End Function但是,有沒有更優雅的方式?
不要為自己的驗證而煩惱。.NET 4.0 通過
MailAddress類顯著改進了驗證。只需使用MailAddress address = new MailAddress(input)如果它拋出,它是無效的。如果您的輸入有任何可能的解釋為符合 RFC 2822 的電子郵件地址規範,它將按此進行解析。上面的正則表達式,甚至是 MSDN 第一篇文章,都是錯誤的,因為它們沒有考慮到顯示名稱、引用的本地部分、域的域文字值、本地部分的正確點原子規範、a郵件地址可以是尖括號、顯示名稱的多個引用字元串值、轉義字元、顯示名稱中的 unicode、註釋和最大有效郵件地址長度。我花了三週時間在 .NET 4.0 中為 System.Net.Mail 重寫郵件地址解析器,相信我,這比僅僅想出一些正則表達式要困難得多,因為有很多邊緣情況。這MailAddress.NET 4.0 beta 2 中的類將具有這種改進的功能。還有一件事,您唯一可以驗證的是郵件地址的格式。如果不向該地址發送電子郵件並查看伺服器是否接受它進行傳遞,您將永遠無法驗證電子郵件地址是否真的可以接收電子郵件。這是不可能的,雖然您可以向郵件伺服器提供 SMTP 命令以嘗試對其進行驗證,但很多時候這些命令將被禁用或返回不正確的結果,因為這是垃圾郵件發送者查找電子郵件地址的常用方法。