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