Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Usually, intermediate hosts are determined via the DNS MX record, not by explicit "source" routing (see section 5 and appendices C and F.2). … If no MX records are found, but an A RR is found, the A RR is treated as if it was associated with an implicit MX RR, with a preference of 0, pointing to that host.
if (@getmxrr($domen, $mxhostsarr, $weight)) // забираем мх
{
if (is_array($mxhostsarr) && count($mxhostsarr))
{
foreach ($mxhostsarr as $mxhost) // долбимся в каждый мх
{
$smtp_conn = @fsockopen($mxhost, 25, $errno, $errstr, 60); // устанавливаем соединение
if ($smtp_conn)
{
echo "conn to ".$mxhost."\n";
flush();
sleep(10);
fputs($smtp_conn,"helo hostname.ru\r\n"); // представляемся
sleep(2);
fputs($smtp_conn,"mail from:<>\r\n");
sleep(2);
foreach($email_list as $k => $email)
{
if ($smtp_conn && $email['checked']==0) // если еще есть соединение и адрес непроверен
{
fputs($smtp_conn,"rcpt to:<".$k.">\r\n"); // имитируем письмо, получаем ответ
sleep(1);
while ($str = fgets($smtp_conn))
{
$result = $str;
echo $k."==".$str."\n";
flush();
}
$ans = substr($result,0,3);
if ($ans=="250")
{
// адрес проверен, активный
}
elseif ($ans=="550")
{
// адрес проверен, ненеактивный
}
else
{
// не удалось проверить адрес
}
}
}
fputs($smtp_conn,"quit\r\n"); // закрываем соединение
unset($smtp_conn);
}
}
}
}
Валидация Email с проверкой MX-записи домена