Главная » Функционал » Дополнительные функции » Регистрация почтовых ящиков в зоне вашего домена при помощи Яндекс почты (API)

Регистрация почтовых ящиков в зоне вашего домена при помощи Яндекс почты (API)

12.08.2012 в 10:18
Автор: JonMagon


Предисловие
Довольно часто вижу на форуме «Сообщества uCoz» вопросы связанные с услугой «Почта для домена» от сервиса Яндекс, и самый частый вопрос: Как сделать, чтобы пользователи могли сами регистрировать себе почту?
О чем и будет рассказано в данном мануале.

Введение
Есть, по крайней мере, два способа реализации:

  • С использованием PHP (рекомендуется)
  • Используя только HTML

Преимущество на стороне PHP, т.к. используя его, токен не может попасть в руки третьих лиц.

Реализация
Для начала определяем токен, перейдя на страницу https://pddimp.yandex.ru/get_token.xml?domain_name=ваш_домен

Реализация на PHP
Создаем файл под названием index.php со следующем содержимым
Code
<?
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_USERAGENT, 'Bot System');
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($curl, CURLOPT_POST, false);
  curl_setopt($curl, CURLOPT_URL, 'https://pddimp.yandex.ru/reg_user_token.xml?token=токен_от_яндекс_почты&u_login=' . $_GET['login'] . '&u_password=' . $_GET['password']);
  $a = curl_exec($curl);
  if (stripos($a, "ok uid") !== false)
  {
  echo "$('#status').html('<img src=\"http://src.ucoz.net/.s/img/icon/ok.png\" style=\"vertical-align:-3px;\"> Регистрация успешна<br/><br/>');";
  }
  else
  {
  if (stripos($a, "badlogin") !== false)
  {
  echo "$('#status').html('<img src=\"http://src.ucoz.net/.s/img/icon/del.png\" style=\"vertical-align:-3px;\"> Логин содержит запрещенные символы<br/><br/>');";
  }
  else if (stripos($a, "passwd-badpasswd") !== false)
  {
  echo "$('#status').html('<img src=\"http://src.ucoz.net/.s/img/icon/del.png\" style=\"vertical-align:-3px;\"> Пароль содержит запрещенные символы<br/><br/>');";
  }
  else if (stripos($a, "login_short") !== false)
  {
  echo "$('#status').html('<img src=\"http://src.ucoz.net/.s/img/icon/del.png\" style=\"vertical-align:-3px;\"> Слишком короткий логин<br/><br/>');";
  }
  else if (stripos($a, "badlogin_length") !== false)
  {
  echo "$('#status').html('<img src=\"http://src.ucoz.net/.s/img/icon/del.png\" style=\"vertical-align:-3px;\"> Слишком длинный логин<br/><br/>');";
  }
  else if (stripos($a, "passwd-tooshort") !== false)
  {
  echo "$('#status').html('<img src=\"http://src.ucoz.net/.s/img/icon/del.png\" style=\"vertical-align:-3px;\"> Слишком короткий пароль<br/><br/>');";
  }
  else if (stripos($a, "passwd-toolong") !== false)
  {
  echo "$('#status').html('<img src=\"http://src.ucoz.net/.s/img/icon/del.png\" style=\"vertical-align:-3px;\"> Слишком длинный пароль<br/><br/>');";
  }
  else if (stripos($a, "occupied") !== false)
  {
  echo "$('#status').html('<img src=\"http://src.ucoz.net/.s/img/icon/del.png\" style=\"vertical-align:-3px;\"> Данный логин занят<br/><br/>');";
  }
  else if (stripos($a, "no-passwd") !== false)
  {
  echo "$('#status').html('<img src=\"http://src.ucoz.net/.s/img/icon/del.png\" style=\"vertical-align:-3px;\"> Пароль не указан<br/><br/>');";
  }
  else
  {
  echo "$('#status').html('<img src=\"http://src.ucoz.net/.s/img/icon/del.png\" style=\"vertical-align:-3px;\"> Необрабатываемая ошибка<br/><br/>');";
  }
  }
  ?>

токен_от_яндекс_почты заменяем на токен, который мы еще получили в самом начале, сохраняем.
Внимание: Файл должен быть в кодировке UTF-8
Загружаем файл на FTP PHP в папку email.
На странице, где хотим вывести форму регистрации, размещаем следующий код
Code
<script type="text/javascript">
function reg()
{
$('#status').html('<img src="http://src.ucoz.net/img/ma/m/i2.gif" style="vertical-align:-3px;"> Выполняется запрос...<br/>');
$('#status').show();
$.getScript('/php/email/index.php?login=' + $('input[name="login"]').val() + '&password=' + $('input[name="password"]').val());
}
</script>
<div style="text-align:center"><b>Регистрация</b><br/><br/>
<div id="status" style="display:none"></div>
Логин:<br/>
<input type="text" name="login" size="30" width="150" maxlength="70"><br/><br/>
Пароль:</br>
<input type="password" name="password" size="30" width="150" maxlength="70"><br/><br/>
<input type="button" value="Зарегистрироваться" onclick="reg();">
</div>


Реализация на HTML
В нужном месте размещаем следующий код
Code
<form action="https://pddimp.yandex.ru/reg_user_token.xml">
<input type="hidden" name="token" value="токен_от_яндекс_почты"/>
<div style="text-align:center"><b>Регистрация</b><br/><br/>
Логин:<br/>
<input type="text" name="u_login" size="30" width="150" maxlength="70"/><br/><br/>
Пароль:</br>
<input type="password" name="u_password" size="30" width="150" maxlength="70"/><br/><br/>
<input type="submit" value="Зарегистрироваться">
</div>
</form>

токен_от_яндекс_почты заменяем на токен, который мы еще получили в самом начале.

Готово, теперь любой пользователь может зарегистрировать себе почтовый ящик в зоне вашего домена.

Рейтинг: 12  (помогла ли Вам эта инструкция: да / нет)          Просмотров: 10753          Комментариев: 31
23.06.2016 в 19:59      0  

А у кого бесконечно весит "Выполняется запрос...", в index.php замените "$('#status').html" на "jQuery('#status').html"
Вот готовый код исправленного index.php, только токен замените.

Код не вставился из-за превышения лимита символов. Выложил его на текстообменник: http://text.fancy.kz/oezy .
23.06.2016 в 19:27      0  

У кого не работает PHP вариант, в скрипте на странице:
1. Проверьте, подключили ли вы jQuery
2. Попробуйте вместо $ поставить jQuery

Мне помогло, особенно, когда при нажатии кнопки ничего не происходит.
P.S. Лучше делайте PHP вариантом, через HTML легко взломать почту!
29.11.2014 в 17:49      0  

Что это такое при получении токена?
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<result xmlns:x="http://www.yandex.ru/xscript">
<error xmlns:xi="http://www.w3.org/2001/XInclude" reason="bad_uid"/>

</result>
13.05.2014 в 20:27      0  

Не работает
26.10.2013 в 03:21      0  

Сколько почтовых ящиков максимально может быть зарегистрировано пользователями через Яндекс почту (способ php) ?
24.02.2014 в 16:29      0  

1000 всего
02.06.2013 в 21:37      0  

ПОХОДУ ДАЖЕ АДМИНИСТРАТОРЫ ВЫМЕРЛИ НА ЭТОМ ФОРУМЕ, СТРАННО ЧТО СПАМА НЕТ.
02.06.2013 в 12:08      0  

Цитата
<?
$curl = curl_init();
curl_setopt($curl, CURLOPT_USERAGENT, 'Bot System');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POST, false);
curl_setopt($curl, CURLOPT_URL,
'https://pddimp.yandex.ru/reg_user_token.xml?token=токен_от_яндекс_почты&u_login=' . $_GET['login'] . '&u_password=' . $_GET['password']);

Пример токена:

<result><ok
token="ec408e118388c46ec5060bb2c3bc8972192d64c430c4a90d315acd65"/></result>

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

Кто-нибудь ответит?
24.02.2014 в 16:30      0  

ec408e118388c46ec5060bb2c3bc8972192d64c430c4a90d315acd65

Только это
31.05.2013 в 22:31      0  

НА html всё работает, а на php не получается.
31.05.2013 в 21:59      +1  

<?
$curl = curl_init();
curl_setopt($curl, CURLOPT_USERAGENT, 'Bot System');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POST, false);
curl_setopt($curl, CURLOPT_URL,
'https://pddimp.yandex.ru/reg_user_token.xml?token=токен_от_яндекс_почты&u_login=' . $_GET['login'] . '&u_password=' . $_GET['password']);

Пример токена:

<result><ok
token="ec408e118388c46ec5060bb2c3bc8972192d64c430c4a90d315acd65"/></result>

и что именно нужно вставить, весь результат или то, что в кавычках. Может быть,
кавычки тоже нужны, поясните, пожалуйста.
28.09.2013 в 15:14      0  

из:
<result><ok 
token="ec408e118388c46ec5060bb2c3bc8972192d64c430c4a90d315acd65"/></result>
 
вводите только:
ec408e118388c46ec5060bb2c3bc8972192d64c430c4a90d315acd65
получаете ссылку типа:
https://pddimp.yandex.ru/reg_user_token.xml?token=ec408e118388c46ec5060bb2c3bc8972192d64c430c4a90d315acd65
06.03.2013 в 22:33      0  

как реализовать после успешной регистрации без ПХП , чтобы перекидывало на отдельную страницу,
т.е чтобы не это показывало,
Код
<page>
<ok uid="00000000000000"/>
</page>

а был редирект уже на страницу входа
1 2 »