Проверка правильности ввода email

Делал регистрацию на сайте litcity.ru, понадобилось устроить проверку правильности ввода email. Не стал заморачиваться с этим на javascript, решил сделать проверку на стороне сервера. Стал копать и обнаружил одну интересную вещь.

Оказывается, стопроцентно проверить правильность email можно только послав на него письмо. Ну, собственно, настолько серьезную проверку мне делать было не надо, потому я решил ограничиться проверкой почтового домена и правильности написания email.

Для проверки правильности написания легко использовать регулярные выражения. А для проверки домена в php существует функция getmxrr. Вкратце — она проверяет наличие MX-записей в DNS для указанного сервера. Таким образом, если MX-записи есть, значит, почтовый сервер в email указан верно.

Таким образом родилась функция:

function checkemail($email) {
 // Проверка на правильность ввода
 $res=(!eregi("^[\._A-Za-z0-9-]+@[\.A-Za-z0-9-]+\.[a-z]{2,6}$", $email));
 // Проверка на наличие MX-записей
 list($mailbox, $domain)=split("@",$email);
 if(@getmxrr($domain, $mxhost)) { $res=true; } else { $res=false; }
 return $res;
}