不允许提交有效的电子邮件地址

Valid Email Addresses are not allowed to submit

下面是我的电子邮件验证代码 -

UserViewModel.cs

[EmailAddress(ErrorMessage = "Invalid email address")]       
public string EmailAddress { get; set; }

Edit.cshtml

<div class='form-group'>
    @Html.LabelFor(model =>model.EmailAddress):
    @Html.TextBoxFor(model =>model.EmailAddress)
    @Html.ValidationMessageFor(m => m.EmailAddress)
</div>

UserController.cs

if (!ModelState.IsValid)
{
   //Show error to user
}
//Update user details

我查看了此 wiki 页面以查找有效的电子邮件地址 - https://en.wikipedia.org/wiki/Email_address#Examples

当我尝试为以下电子邮件地址提交表单时 -

"much.more unusual"@example.com
"very.unusual.@.unusual.com"@example.com
"very.(),:;<>[]\".VERY.\"very@\ \"very\".unusual"@strange.example.com
admin@mailserver1
"()<>[]:,;@\\"!#$%&'*+-/=?^_`{}| ~.a"@example.org
" "@example.org
üñîçøðé@example.com
üñîçøðé@üñîçøðé.com

admin@mailserver1 外,上述所有电子邮件地址都在客户端验证失败。

问题 -

谢谢!

对于 html5 客户端验证 - 我相信大多数情况都会失败 - 请参阅 w3c's email specification - 用于验证电子邮件的正则表达式是:

/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/

所有单独列出的形式 admin@mailserver1 将无法通过此正则表达式匹配测试。

您可以在 ASP.NET MVC github repo 中找到 asp.net MVC 中用于电子邮件验证的正则表达式 从我执行的 RegEx 测试来看,除了 admin@mailserver1

之外,它似乎接受所有这些电子邮件地址都是有效的