Простая функция проверки электронной почты SMTP для php? Кроме того, стоит ли это того? - PullRequest
5 голосов
/ 31 мая 2009

У кого-нибудь есть хорошая функция для проверки адресов электронной почты по SMTP в PHP? Кроме того, стоит ли это того? Это замедлит мой сервер?

-> РЕДАКТИРОВАТЬ: Я имею в виду что-то вроде этого:

http://onwebdevelopment.blogspot.com/2008/08/php-email-address-validation-through.html

, которая предназначена для дополнения проверки синтаксиса адреса электронной почты.

Хотя это выглядит сложно, и я надеялся, что есть более простой способ сделать это.

Ответы [ 4 ]

2 голосов
/ 31 мая 2009

Вот то, что, я полагаю, вы ищете. Это делает проверку с сервером SMTP. Он показывает код PHP. http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/.

2 голосов
/ 31 мая 2009

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

/*checks if email is well formed and optionally the existence of a MX at that domain*/
function checkEmail($email, $domainCheck = false)
{
    if (preg_match('/^[a-zA-Z0-9\._-]+\@(\[?)[a-zA-Z0-9\-\.]+'.
                   '\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/', $email)) {
        if ($domainCheck && function_exists('checkdnsrr')) {
            list (, $domain)  = explode('@', $email);
            if (checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A')) {
                return true;
            }
            return false;
        }
        return true;
    }
    return false;
}

Использование:

$validated = checkEmail('foo@gmail.com', true);
0 голосов
/ 15 марта 2011

Вы можете использовать мою бесплатную функцию PHP is_email() для проверки адресов. Это доступно здесь .

Это гарантирует, что адрес полностью соответствует RFC 5321. При желании он также может проверить, действительно ли существует домен.

Вы не должны полагаться на средство проверки, чтобы сообщить вам, существует ли адрес электронной почты пользователя на самом деле: некоторые интернет-провайдеры выдают несоответствующие адреса своим пользователям, особенно в странах, которые не используют латинский алфавит. Больше в моем эссе о проверке электронной почты здесь: http://isemail.info/about.

0 голосов
/ 31 мая 2009

Вот такой код , взятый из модуля drupal email_verify . Там есть несколько специфичных для Drupal вызовов, но это не должно занять много времени, чтобы очистить его для универсальной функции PHP:

Также обратите внимание, что некоторые веб-хосты блокируют исходящий порт 25, так как он в основном используется спаммерами. Если ваш хост практикует такой блок, вы не сможете использовать эту форму проверки.

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