| Статьи о PHP | PHP и DNS. Часть II. Проверка почтового адреса. PHP и DNS. Проверка почтового адресаФункция getmxrr
string getmxrr(string hostname, array mxhost, [, array weight])
Эта функция принимает в качестве аргумента имя хоста hostname в данном домене и заполняет массив mxhost списком почтовых ретрансляторов этого домена. Если указан третий необязательный аргумент weight, то функция заполняет его значениями предпочтения, которые возвращает ей почтовый ретранслятор
Функция getmxrr является достаточно полезной. Дело в том, что когда требуется послать сообщения по адресу username@someserver.com, необходимо сначала узнать хост почтового ретранслятора для домена someserver.com, а затем получить его IP-адрес. После этого можно соединяться с хостом для доставки почты. В домене может быть несколько почтовых ретрансляторов с разными значениями предпочтения, поэтому, получив список ретрансляторов, имеет смысл устанавливать соединение с тем из них, который имеет максимальное значение предпочтения.
В следующем листинге показан пример кода, с помощью которого можно получить список почтовых ретрансляторов:
Получение списка почтовых ретрансляторов
<?
$domain = "server.com";
getmxrr($domain, $maillist, $priority);
echo("Список почтовых ретрансляторов хоста $domain:
\n");
for($i = 0; $i < count($maillist); ++$i)
{
echo("$maillist[$i] = $priority[$i]
\n");
}
?>
Проверка существования адреса электронной почты Заметим сразу, что речь идет не о проверке адресов с помощью регулярного выражения, а о проверке существования хоста почтового ретранслятора для некоторого домена. Т.е. приведенный выше код можно практически не перерабатывая приспособить для проверки существования e-mail адреса:
<?
$email_arr = explode("@" , $email);
$host = $email_arr[1];
if (!getmxrr($host, $mxhostsarr))
{
echo "На адрес $email отправка почты невозможна";
exit;
}
getmxrr($host, $mxhostsarr, $weight);
echo "На $email письма могут отправляться через следующие хосты:
";
for ($i=0; $i < count($mxhostsarr); $i++)
{
echo ("$mxhostsarr[$i] = $weight[$i]
");
}
?>
|