针对无效字符验证电子邮件地址

hej*_*jto 5 .net c# asp.net email email-validation

在验证电子邮件地址时,我尝试使用以下两个EmailAddressAttributeSystem.ComponentModel.DataAnnotations

[EmailAddress(ErrorMessage = "Invalid Email Address")]
public string Email { get; set; }
Run Code Online (Sandbox Code Playgroud)

MailAddress类从System.Net.Mail做:

bool IsValidEmail(string email)
{
    try {
        var addr = new System.Net.Mail.MailAddress(email);
        return addr.Address == email;
    }
    catch {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

按照C# 代码中的建议验证电子邮件地址。这两种方法原则上都有效,它们会捕获无效的电子邮件地址,例如user@,不符合格式的user@host

我的问题是这两种方法都没有检测到用户字段中的无效字符,例如æ, ø, or å (e.g. åge@gmail.com). 为什么这些字符不返回验证错误有什么原因吗?是否有人对如何在用户字段中合并无效字符的验证有一个优雅的解决方案?

Man*_*mer 4

这些字符不是无效的。不寻常,但并非无效。您链接的问题甚至包含了为什么您不应该关心的解释。

在世界范围内充分利用电子邮件要求(受到其他限制)人们能够使用自己姓名的近似变体(用自己的语言和文字正确书写)作为电子邮件地址中的邮箱名称。

- RFC 6530,2012