Порой при создании скриптов необходимо проверить, существует ли данный Email или нет. Ниже приведены возможные действия в данной ситуации.

Функция 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, если все порядке.



Постоянные ссылки

При копировании ссылка на TeaM RSN обязательна!

URI

Html (ЖЖ)

BB-код (Для форумов)

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.