Проверка E-Mail

Обычно, когда требуется послать сообщения по адресу 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"); }

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

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

$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]");

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

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

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

Смотрите также:


.