为了验证电子邮件地址,我们在MailAddress Class上进行转发.但是,根据MailAddress类,这封电子邮件的@bbb..com地址似乎是有效的.
MSDN声明这是有效的电子邮件地址:
MailAddress类支持以下邮件地址格式:
- user @ host的简单地址格式.如果未设置DisplayName,则这是生成的邮件地址格式.
- 标准引用的显示名称格式为"显示名称".如果设置了DisplayName,则这是生成的格式.
- 如果不包括"显示名称"user @ host,则在用户名,主机名周围添加尖括号.
- 如果不包括这些名称,则会在DisplayName周围添加引号以显示名称.
- DisplayName支持Unicode字符.属性.
- 带引号的用户名.例如,"用户名"@host.
- 用户名中的连续点和尾随点.例如,user ... name .. @ host.
- 括号内的域文字.例如, .
- 评论.例如,(评论)"显示名称"(评论)<(评论)用户(评论)@(评论)域(评论)>(评论).传输前删除注释.
取自https://msdn.microsoft.com/en-us/library/system.net.mail.mailaddress%28v=vs.110%29.aspx.
请注意,7 bullet接近此问题,但它表示连续点可以显示在域中不在域中的用户名中.
其他资源如http://isemail.info(http://isemail.info/a@bbb..com)表明这不是有效的电子邮件地址.
你认为应该是正确的行为?这是一个poc.
//C# Example
var emailAddress = @"a@bbb..com";
Func<string,bool> validEmail = (email)=>
{
try
{
var address = new System.Net.Mail.MailAddress(email);
return true;
}catch (Exception ex)
{
return false;
}
};
Assert.IsTrue(validEmail(emailAddress));
//using NUnit.Framework
//O2Ref:nunit.framework.dll
Run Code Online (Sandbox Code Playgroud)