Суббота, 27.04.2024, 10:26
ArsNet - мир НИТ
Приветствую Вас Гость | RSS
Главная PHP и DNS. Проверка почтового адреса - Форум Регистрация Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Web мастерам и дизайнерам » PHP » PHP и DNS. Проверка почтового адреса
PHP и DNS. Проверка почтового адреса
WilDДата: Среда, 24.09.2008, 15:48 | Сообщение # 1
Папаня
Группа: Администраторы
Сообщений: 704
Репутация: 16
Статус: Вне ресурса
Пол: Мужчина
Зарегистрирован(а): 04.08.2008
Награды:
За создание сайта За перенос домена За развитие ресурса За хорошую репутации За 100 Сообщений За 250 Сообщений За 500 Сообщений За первое сообщение на форуме и вступление в наши ряды
Функция getmxrr
string getmxrr(string hostname, array mxhost, [, array weight])

Эта функция принимает в качестве аргумента имя хоста hostname

в данном домене и заполняет массив mxhost

списком почтовых ретрансляторов этого домена. Если указан третий необязательный аргумент weight , то функция заполняет его значениями предпочтения, которые возвращает ей почтовый ретранслятор

Обычно когда требуется послать сообщения по адресу username@someserver.com , необходимо сначала узнать хост почтового ретранслятора для домена someserver.com, а затем получить его ip-адрес.

После этого можно соединяться с хостом для доставки почты.

В домене может быть несколько почтовых ретрансляторов с разными значениями предпочтения, поэтому, получив список ретрансляторов, имеет смысл устанавливать соединение с тем из них, который имеет максимальное значение предпочтения.

В следующем листинге показан пример кода, с помощью которого можно получить список почтовых ретрансляторов:

Получение списка почтовых ретрансляторов

<?
$domain = "server.com";
getmxrr($domain, $maillist, $priority);
echo("Список почтовых ретрансляторов хоста $domain: <br>\n");
for($i = 0; $i < count($maillist), ++$i)
{
echo("$maillist[$i] = $priority[$i] <br>\n");
}
?>

Проверка существования адреса электронной почты

Заметим сразу, что речь идет не о проверке адресов с помощью регулярного выражения, а о проверке существования хоста почтового ретранслятора для некоторого домена.

Т.е. приведенный выше код можно практически не перерабатывая приспособить для проверки существования 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>");
}

?>

А вот так выглядит функция проверки правильности E-Mail'а. Помните, эта функция проверят только существование почтового сервера и синтаксическую правильность адреса. Для полной проверки существования адреса необходимо отправить на него письмо со случайным кодом и попросить получателя письма ввести этот код а форме, на вашем сайте.

function CheckEmail($Email)
{
if (!eregi("^[\._a-zA-Z0-9-]+@[\.a-zA-Z0-9-]+\.[a-z]{2,6}$", $Email)) return 1;
list($Username, $Domain) = split("@",$Email);
if (@getmxrr($Domain, $MXHost)) return 0;
else
{
$f=@fsockopen($Domain, 25, $errno, $errstr, 30);
if($f)
{
fclose($f);
return 0;
}
else return 1;
}
}

Функция возвращает 1, если адрес указан неверно и 0, если все порядке.


Заработать много денег - храбрость, сохранить их - мудрость, граматно тратить - искуство.
 
Форум » Web мастерам и дизайнерам » PHP » PHP и DNS. Проверка почтового адреса
  • Страница 1 из 1
  • 1
Поиск: