Модуль Drupal для работы с Яндекс.Почтой

2012-09-186088

Регистрация почты для домена через API на Яндексе. API Яндекс Почты может быть не совсем понятен, поэтому для вас заготовлен код страницы регистрации, это облегчит некоторую работу по настройке.

Код PHP (Внимание! Сохранять файл в формате UTF-8):

Code
200?’200px’:»+(this.scrollHeight+5)+’px’);»>    if ($_REQUEST[login]!=»» AND $_REQUEST[password]!=»»)   {   $token=»сюда ваш токен»; # токен   $login=$_REQUEST[login]; // имя почтового ящика без домена   $password=$_REQUEST[password]; // пароль почтового ящика   $postData=»token=».$token.»&u_login=».$login.»&u_password=».$password.»»; // формируем запрос   $ch = curl_init(); // инициализация сеанса   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // Задает проверку имени, указанного в сертификате удаленного сервера, при установлении SSL соединения.   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // запретить проверку сертификата удаленного сервера   curl_setopt($ch, CURLOPT_URL, «https://pddimp.yandex.ru/reg_user_token.xml»); // URL, с которым будет производиться операция.   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // При установке этого параметра в ненулевое значение CURL будет возвращать результат, а не выводить его.   curl_setopt($ch, CURLOPT_POST, 1); // При установке этого параметра в ненулевое значение будет отправлен HTTP запрос методом POST   curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); // Строка, содержащая данные для HTTP POST запроса.   $answer=curl_exec($ch); // загрузка страницы и выдача её браузеру   curl_close($ch); // завершение сеанса и освобождение ресурсов   $pos1 = stripos($answer,»ok uid»);   if ($pos1!==false) {   echo «Данный адрес успешно зарегистрирован!»;   }   $pos1 = stripos($answer,»occupied»);   if ($pos1!==false) {   echo «Данный адрес уже занят!»;   }   $pos1 = stripos($answer,»badlogin»);   if ($pos1!==false) {   echo «В логине использованы не допустимые символы!»;   }   $pos1 = stripos($answer,»bad_password»);   if ($pos1!==false) {   echo «В пароле использованы не допустимые символы!»;   }   }           Почта@Presebook.RU              

  

  

    

Для регистрации введите желаемый логин и пароль

       

Где:

Code

Меняем на название вашего файла на php

Сохраните в социальную сеть

—>

Создать сайт в uKit Нужен классный сайт для бизнеса?Воспользуйтесь сервисом uKit. Никакого кода!
Вступление

С недавнего времени Яндекс порадовал такой услугой как почта для домена. Довольно таки полезная услуга. А наличие Яндекс.API для той радости позволяет завести вашим пользователям красивые почтовые адреса. В своей статье я хочу расказать о первых своих успехах в этом деле для сайта на Drupal. В данном случае логичным будет написание модуля.

API

Общение движка сайта с яндексом будет происходить посредством http(s) запросов. Параметры этих запросов описаны в справке, но до начала работ необходимо получить token — некую последовательность символов, которая будет присутствовать в запросе для авторизации действий. Получить её просто — вам нужно залогиниться на сайте Яндекса и затем вставить в адресную строку pddimp.yandex.ru/get_token.xml?domain_name=... где вместо троеточия вставить имя домена. В ответ сервер выдаст xml-документ с токеном. Я определил для себя несколько заданий для первого этапа. Нам нужно немного операций, а именно:

  • Создание ящика
  • Редактирование данных
  • Удаление ящика
  • Доступность адреса

Для каждого из действий существуют простые запросы. Кроме того на старнице справки присутствуют наборы готовых классов, но я решил написать всё с нуля используя код за основу.

Пишем модуль

Модуль у нас получится довольно простой. Буквально из двух функций-хуков и четырёх вспомогательных функций. У модуля также будет страница администрирования. Я создал файл yandex_mail_pdd.info и yandex_mail_pdd.module. В первом указал данные для модуля. Файл может выглядеть так:name = Yandex.Mail API description = Работа с Яндекс.Почтой core = 6.x А вот содержимое второго файла — код нашего модуля. Определим для начала реакцию движка на адреса. Определим страницу админки и функцию обратного вызова для неё.

Copy Source | Copy HTML

  1. function yandex_mail_pdd_menu() {
  2.   $items = array();
  3.   $items['admin/settings/yandex_mail_pdd'] = array(
  4.     'title' => t('Yandex.Mail Settings'),
  5.     'description' => 'Settings for Yandex.Mail module',
  6.     'page callback' => 'drupal_get_form',
  7.     'page arguments' => array('yandex_mail_pdd_admin'),
  8.     'access arguments' => array('access administration pages'),
  9.     'type' => MENU_NORMAL_ITEM,
  10.    );
  11.   return $items;
  12. }

Теперь нужно создать странцу для администрирования. Это будет функция генерации формы с двумя текстовыми полями(токен и домен) и одним чекбоксом(вывод отладочной информации)

Copy Source | Copy HTML

  1. function yandex_mail_pdd_admin()
  2. {
  3.     $form['ypdd_domain']=array(
  4.         '#type' => 'textfield',
  5.         '#title' => t('Domain'),
  6.         '#description' => t('Your domain.'),
  7.         '#default_value'=>variable_get('ypdd_domain', ''),
  8.         );
  9.     $form['ypdd_token']=array(
  10.         '#type' => 'textfield',
  11.         '#title' => t('Token'),
  12.         '#description' => t('Put here token for your domain'),
  13.         '#default_value'=>variable_get('ypdd_token', ''),
  14.         );
  15.     $form['ypdd_debug']=array(
  16.         '#type' => 'checkbox',
  17.         '#title' => t('Debug'),
  18.         '#description' => t('Output debug information'),
  19.         '#default_value'=>variable_get('ypdd_debug', true),
  20.         );
  21.     return system_settings_form($form);
  22. }

Теперь приступим к написанию функций для общения с Яндексом. Для отправки http(s) запросов есть два пути — cURL и API Drupal. Запросы от второго варианта Яндекс у меня почему то не принимал, поэтому я выбрал первый. Функция проверки занятости логина выглядит так:

Copy Source | Copy HTML

  1. function _pdd_chek_user($login)
  2. {
  3.     $url='https://pddimp.yandex.ru/check_user.xml?login=test&token='.variable_get('ypdd_token', '');
  4.     $ch = curl_init();
  5.     curl_setopt($ch, CURLOPT_HTTPGET, true);
  6.     curl_setopt_array($ch, array(
  7.             CURLOPT_URL => $url,
  8.             CURLOPT_RETURNTRANSFER => true,
  9.             CURLOPT_FOLLOWLOCATION => true,
  10.         ));
  11.     $sxml = new SimpleXMLElement(curl_exec($ch));
  12.     $xml=curl_exec($ch);
  13.     if(variable_get('ypdd_debug', true)) dsm($xml);
  14.     curl_close($ch);
  15.     return $sxml->result;
  16. }

Остальные функции отличаются лишь запросами и другими мелкими деталями. Логика работы такая же. Для того что бы при работе с данными аккаунта пользователя изменения применялись и к ящику воспользуемся хуком hook_user из API Drupal. Примерно так:

Copy Source | Copy HTML

  1. function yandex_mail_pdd_user($op, &$edit, &$account, $category = NULL)
  2. {
  3.     switch($op)
  4.     {
  5.         case 'validate':
  6.         {
  7.             if($edit['op']==t('Save'))
  8.             {
  9.                 $res=_pdd_update_user($account->name, array('password'=>$edit['pass']));
  10.             }
  11.             else
  12.                 $res=_pdd_create_user($edit['name'], $edit['pass']);
  13.             if(isset($res['error']))
  14.             {
  15.                 if($res['error']=='passwd-tooshort')
  16.                     form_set_error('pass', 'Короткий пароль.');
  17.                 if($res['error']=='occupied')
  18.                     form_set_error('name', 'Имя занято.');
  19.             }
  20.         };break;
  21.         case 'delete':
  22.         {
  23.             _pdd_delete_user($account->name);
  24.         };break;
  25.     }
  26. }

Для вывода отладочной информации необходим модуль Devel. Именно оттуда функция dsm(). Собственно вот и вся работа. Конечно, на релиз это не тянет, но как скелет вполне подойдёт. Для доработок уйма пространства. Планирую дописать получение списка писе�� при входе на сайт и ещё кое какой функционал. Всех с Новым Годом!

53
2.4k 53

Yandex.Connect has two REST API interfaces to work with the Connect services using HTTP requests: Directory API and Tracker API.

Use these interfaces to integrate the Yandex.Connect features into your online services and apps. This will enable you to automate workflows, and your employees can manage the company account and work with Tracker tasks via third-party applications.

Directory API

Directory API is an interface that allows you to manage your organization in Yandex.Connect. Using the Directory API, you can:

  • Manage your company’s organizational structure: create and edit departments and teams.
  • Create and edit employee accounts.
  • Connect and remove domains and manage their DNS records.

To learn more about the Directory API, read the documentation.

Tracker API

The Tracker API is an interface for accessing Tracker. With the Tracker API, you can:

  • Integrate Tracker into other services. For example, use a chat bot to manage tasks, or link Tracker to your CRM system.

  • Automatically create tasks, batch edit, and search for tasks using filters.

  • Set specific handling rules for specific actions, such as updating a task status at a particular time.

  • Create web browser extensions for managing Tracker.

To learn more about the Tracker API, read the documentation.

Ссылка на основную публикацию