2016-08-29 3 views
1

В настоящее время я использую следующий код для проверки электронной почты, но это проверить dsgf @ г почтового идентификатор, пожалуйста, помогите мнеEmail Validation в .Net mvc4

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

dsgf @ g не может быть правильным адресом электронной почты, действительный адрес электронной почты должен быть следующим: [email protected] Кроме того, вам нужно указать тип данных адреса электронной почты (для форматирования) и проверить его с помощью атрибута EmailAddress. См. Это: http://stackoverflow.com/questions/8989081/email-model-validation-with-dataannotations-and-datatype – Fourat

+2

@Fourat 'dsgf @ g' - полностью действительный адрес электронной почты, поэтому нет ничего плохого в том, что метод. Рассмотрим пример 'имя_пользователя @ localhost', например – Marusyk

ответ

2

EmailAddress атрибут маркирует как допустимый [email protected], потому что это полностью действительный адрес электронной почты, поэтому нет ничего плохого в этом методе. Рассмотрим, например, пример [email protected].

Если это не подходит вам, вы можете использовать регулярное выражение ti, чтобы установить собственное правило для проверки. Попробуйте использовать '' RegularExpression атрибут вместо этого, что-то вроде:

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

или

[RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "Invalid Email Address")] 
public string Cust_Email { get; set; } 
+0

максимум, который я сделал бы с регулярным выражением для проверки почтового адреса, проверяет, есть ли символ '@'. В его случае, в конечном счете, проверяя «.». после символа «@». проверка электронной почты с регулярным выражением - это неправильная практика. См. Мой ответ с ссылкой на регулярное выражение (что тоже устарело. Может быть, вы понимаете, что я имею в виду) –

+0

@MatthiasBurger Я не думаю, что проверенное письмо с регулярным выражением является плохой практикой. Если вы не пишете международную услугу, вы можете очень легко проверить почту с помощью регулярного выражения. Он используется в каждой второй службе и приложении. И RFC822 очень боится, посмотрите на это: http://blog.onyxbits.de/validating-email-addresses-with-a-regex-do-yourself-a-favor-and-dont-391/ – Marusyk

+0

'EmailValidator Меня тоже пугает класс. : D Но вы действительно нашли время, чтобы получить правильное регулярное выражение вместо перехода на более простое решение и отправить ему электронное письмо с кодом или ссылкой, чтобы убедиться, что его почтовый адрес действителен? (помните, что возможности для адресов электронной почты несколько раз менялись. Вам также придется менять свое регулярное выражение, чтобы поддерживать новый стандарт - каждый раз). Кроме того, при отправке почты у вас есть преимущество, чтобы узнать, существует ли адрес. –

0

электронной почты является полностью действительным.

Если вы хотите проверить, просто не используйте regex для проверки. Отправьте ему код на этот адрес электронной почты, который он должен ввести. адреса электронной почты теперь могут содержать такие символы, как ä, ö, ü, à, ... это может быть очень сложно сопоставить с правильным. , если вы действительно хотите проверить его с помощью регулярного выражения, вы можете взять стандарт RFC822, а затем: вы найдете здесь: http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html (получайте удовольствие с этим - не хотите публиковать, это слишком долго)

0

Как насчет метода расширения.

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; 
}