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

时间:2015-08-17 10:39:47

标签: html5 asp.net-mvc-5.2

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

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之外,所有上述电子邮件地址都在客户端验证失败,而Baba"\t"58.38 Tata"\t"68.38 Mama"\t"30.80 jaja"\t"88.65 在服务器端验证失败。

问题 -

  • 为什么HTML5 / MVC电子邮件地址验证无法通过这些有效的电子邮件地址。
  • 是否有任何网站链接可列出HTML5电子邮件验证规则?
  • 是否有任何网站链接可以列出MVC电子邮件验证规则?

谢谢!

1 个答案:

答案 0 :(得分:1)

对于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

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