C# .NETMVC4中的电子邮件验证

C# .NETMVC4中的电子邮件验证,c#,asp.net-mvc,email-validation,model-validation,C#,Asp.net Mvc,Email Validation,Model Validation,目前我正在使用以下代码进行电子邮件验证,但 它确实验证了dsgf@g邮件id请帮助我 [Required(ErrorMessage = "Please Enter Email Id")] [Display(Name = "Email-Id")] [EmailAddress(ErrorMessage = "Invalid Email Address")] public string Cust_Email { get; set; } EmailAddress属性将标记为有效的dsgf@g因为它是一

目前我正在使用以下代码进行电子邮件验证,但 它确实验证了dsgf@g邮件id请帮助我

[Required(ErrorMessage = "Please Enter Email Id")]
[Display(Name = "Email-Id")]
[EmailAddress(ErrorMessage = "Invalid Email Address")]
public string Cust_Email { get; set; }

EmailAddress
属性将标记为有效的
dsgf@g
因为它是一个完全有效的电子邮件地址,所以该方法没有任何错误。考虑示例<代码>username@localhost例如

如果它不适合您,那么您可以使用正则表达式设置自己的验证规则。尝试改用“RegularExpression”属性,例如:

[RegularExpression("^[^@\s]+@[^@\s]+(\.[^@\s]+)+$", ErrorMessage = "Invalid Email Address")]
public string Cust_Email { get; set; }


这封电子邮件是完全有效的

如果您想验证,就不要使用正则表达式进行验证。向他发送一个他必须输入的电子邮件地址的代码。电子邮件地址现在可以包含ä,ö,ü,á等字符,。。。这可能很难与正确的匹配。。 如果您真的想使用正则表达式对其进行验证,可以采用RFC822标准,然后:
你可以在这里找到:(玩得开心-我不想发布,它太长了)

扩展方法怎么样

    public static bool IsValidEmail(this string email)
{
    bool rt = false;
    try
    {
        var mail = new System.Net.Mail.MailAddress(email);
        rt = mail.Host.Contains(".");
    }
    catch { }
    return rt;
}

dsgf@g不能是正确的电子邮件地址,有效的电子邮件地址必须如下所示:name@domain.tld. 另外,您需要将其设置为电子邮件地址数据类型(用于格式化),并使用EmailAddress属性对其进行验证。请参见:@Fourat
dsgf@g
是一个完全有效的电子邮件地址,因此该方法没有问题。考虑示例<代码>username@localhost例如,我用regex验证邮件地址的最大方法是检查是否有1个'@'字符。在他的例子中,最终检查“@”后面的“.”字符。使用regex验证电子邮件是一种糟糕的做法。查看我的回复,链接到regex(也过时了。也许你明白我的意思)@MatthiasBurger我不认为用regex验证电子邮件是一种不好的做法。如果你不写国际服务,那么你可以很容易地用regex检查邮件。它在每一秒的服务和应用中都在使用。RFC822非常害怕,请看这个:
EmailValidator
-类也让我害怕但是你真的会花时间来获取正确的正则表达式,而不是切换到更简单的解决方案,并向他发送一封带有代码或链接的电子邮件,以确保他的邮件地址有效吗?(请记住,电子邮件地址可能会更改几次。为了支持新标准,您也必须更改您的正则表达式-每一次)。另外,通过发送邮件,您可以查看地址是否存在。@MatthiasBurger我没有说您的解决方案不好。这是一个好办法。我刚才说过regex是一种更简单的方法:),问题是关于使用属性进行验证
    public static bool IsValidEmail(this string email)
{
    bool rt = false;
    try
    {
        var mail = new System.Net.Mail.MailAddress(email);
        rt = mail.Host.Contains(".");
    }
    catch { }
    return rt;
}