Проверката на имейл адреса показва грешните адреси като правилни

Имам въпрос относно проверката на имейл в (Visual) C#.

Търсих в мрежата и намерих няколко метода за това. напр. тук:

Странно и двете изглежда пропускат имейли като "ex.as@asd,com" (забележете запетая вместо точка).

Въпреки това, ако се опитам да изпратя имейл чрез SmtpClient обект, получавам изключение, защото даденият имейл адрес има грешен формат.

Някакви идеи?


person TheElk    schedule 31.07.2015    source източник
comment
Може да ми е доста трудно да потвърдя имейл адрес. Тъй като вашият SMTP клиент наистина е този, който решава кое е валидно, трябва да го използвате като ваш валидатор. stackoverflow.com/a/1374644/1341538 Тази публикация показва добър пример.   -  person Andres Castro    schedule 31.07.2015
comment
Използвайте простия регулярен израз в приет отговор. stackoverflow.com/questions/13719821 /   -  person EZI    schedule 31.07.2015
comment
Наистина съжалявам, че проработиха.... Току-що редактирах валидирането на грешната точка в моята програма. Все пак благодаря за всичките ви полезни отговори!   -  person TheElk    schedule 31.07.2015


Отговори (2)


Regex от първата връзка работи за мен. Трябва да замените всички \ на \\ и " на \".

Опитах този код:

var validateEmailRegex = new Regex("(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])");
var isValidEmail = validateEmailRegex.Match("ex.as@asd,com").Success;

И получих isValidEmail == false.

person Vadim Pashkov    schedule 31.07.2015

Ако опитате по-долу, това ще хвърли изключение по начин, по който можете да потвърдите адреса.

try 
{
    address = new MailAddress("ex.as@asd,com", "Email validation").Address;
} 
catch(FormatException) {
    //Invalid email address
}

MailAddress.Address свойството хвърля FormatException, когато се опитате да го получите.

person CharithJ    schedule 31.07.2015