Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Наш чат в Telegram для обмена идеями, проектами, мыслями, людьми в сфере ИТ г.Ростова-на-Дону: @it_rostov
Проверка E-Mail
Класс осуществляет проверку адреса электронной почты по трем параметрам:
- При помощи регулярных выражений.
- Производит проверку домена из белого списка.
- Делает тестовый запрос на сервер.
Данный пример отключен из-за использования спамерами. Воспользуйтесь сервисом проверки e-mail.
/*
* This script was writed by Setec Astronomy - setec@freemail.it
*
* This script is distributed under the GPL License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* http://www.gnu.org/licenses/gpl.txt
*
*/
define ('DEBUG_OK', true);
class CCheckMail
{
var $timeout = 10;
var $domain_rules = array ("aol.com", "bigfoot.com", "brain.net.pk", "breathemail.net",
"compuserve.com", "dialnet.co.uk", "glocksoft.com", "home.com",
"msn.com", "rocketmail.com", "uu.net", "yahoo.com", "yahoo.de");
function _is_valid_email ($email = "")
{ return preg_match('/^[.\w-]+@([\w-]+\.)+[a-zA-Z]{2,6}$/', $email); }
function _check_domain_rules ($domain = "")
{ return in_array (strtolower ($domain), $this->domain_rules); }
function execute ($email = ""){
if (!$this->_is_valid_email ($email)) return false;
$host = substr (strstr ($email, '@'), 1);
if ($this->_check_domain_rules ($host)) return false;
$host .= ".";
if (getmxrr ($host, $mxhosts[0], $mxhosts[1]) == true) array_multisort ($mxhosts[1], $mxhosts[0]);
else { $mxhosts[0] = $host;
$mxhosts[1] = 10;
}
if (DEBUG_OK) print_r ($mxhosts);
$port = 25;
$localhost = $_SERVER['HTTP_HOST'];
$sender = 'info@' . $localhost;
$result = false;
$id = 0;
while (!$result && $id < count ($mxhosts[0]))
{ if (function_exists ("fsockopen"))
{ if (DEBUG_OK) print_r ($id . " " . $mxhosts[0][$id]);
if ($connection = fsockopen ($mxhosts[0][$id], $port, $errno, $error, $this->timeout))
{
fputs ($connection,"HELO $localhost\r\n"); // 250
$data = fgets ($connection,1024);
$response = substr ($data,0,1);
if (DEBUG_OK) print_r ($data);
if ($response == '2') // 200, 250 etc.
{
fputs ($connection,"MAIL FROM:<$sender>\r\n");
$data = fgets($connection,1024);
$response = substr ($data,0,1);
if (DEBUG_OK) print_r ($data);
if ($response == '2') // 200, 250 etc.
{
fputs ($connection,"RCPT TO:<$email>\r\n");
$data = fgets($connection,1024);
$response = substr ($data,0,1);
if (DEBUG_OK) print_r ($data);
if ($response == '2') // 200, 250 etc.
{
fputs ($connection,"data\r\n");
$data = fgets($connection,1024);
$response = substr ($data,0,1);
if (DEBUG_OK) print_r ($data);
if ($response == '2') // 200, 250 etc.
{ $result = true; }
}
}
}
fputs ($connection,"QUIT\r\n");
fclose ($connection);
if ($result) return true;
}
}
else break;
$id++;
} //while
return false;
}
}
Пример использования:
$str='vasya@mail.ru' $alter=new CCheckMail(); print "E-mail: ".$str." - ".($alter->execute($str)?'существует':'не существует');
Данный скрипт очень упрощен и не учитывает множество нюансов работы почтового сервера. Если Вы хотите проверять реальные адреса на реальных почтовых серверах обратите внимание на скрипт проверки email адресов.
- Смотрите также:
- Сервис и API проверки e-mail.
- Другой пример проверки e-mail.
- Универсальная рассылка почты на PHP,
- Вставка изображения в письмо на PHP,
- Отправка почты по шаблону на PHP,
- Удалить все сообщения из почтового ящика.
- Настройки SPF и DKIM чтобы письма не попадали в спам.
- email рассылка по шаблону на PHP