пинг для проверки реальных адресов электронной почты - PullRequest
5 голосов
/ 25 марта 2011

Есть ли в любом случае, чтобы пинговать адрес электронной почты или что-то подобное проверить это реальный рабочий адрес.Я не говорю о регулярных выражениях или php проверяющих фильтрах и т. Д., Но на самом деле проверка адреса существует ??

Ответы [ 3 ]

3 голосов
/ 25 марта 2011

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

2 голосов
/ 13 декабря 2012

полезная функция для проверки имени хоста существует (90% работает!):

function validate_email($email)
{
    if(!preg_match ("/^[\w\.-]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]+$/", $email))
        return false;
    list($prefix, $domain) = explode("@",$email);
    if(function_exists("getmxrr") && getmxrr($domain, $mxhosts))
        return true;
    elseif (@fsockopen($domain, 25, $errno, $errstr, 5))
        return true;
    else
        return false;
}
1 голос
/ 25 марта 2011

Вы можете проверить, есть ли записи MX для соответствующего домена: getmxrr () http://php.net/manual/en/function.getmxrr.php

Но я бы предложил использовать валидацию из двух частей: - сначала регулярное выражение simple для простой проверки ввода - затем simple проверка, чтобы убедиться, что TLL действителен

// pattern was taken from PHP's own source
$pattern =  "/^((\\\"[^\\\"\\f\\n\\r\\t\\b]+\\\")|([A-Za-z0-9_][A-Za-z0-9_\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]*(\\.[A-Za-z0-9_\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]*)*))@((\\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9])(([A-Za-z0-9\\-])*([A-Za-z0-9]))?(\\.(?=[A-Za-z0-9\\-]))?)+[A-Za-z]+))$/D";
if (preg_match($pattern, $email)) {
    /**
     * allow ip address as domain OR it should be a valid TLD
     */
    $long = ip2long(substr($email, strrpos($email, '@')+1));
    return (($long !==FALSE && $long>-1)
        || isValidTld(substr($email, strrpos($email, '.')+1)));
}

Это еще не гарантия того, что это работает, но кроме отправки по электронной почте и перехвата возможных отказов ... это в значительной степени (кроме проверки mx) это ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...