Example #1
0
    def edit_user(
        self, login,
        password='', domain_name='',
        iname='', fname='', sex='', hintq='', hinta=''):
        """Метод позволяет изменить персональные данные пользователя:
        имя, фамилию, пол, пароль,
        секретный вопрос и ответ на секретный вопрос.

        login           Логин пользователя для доступа к почтовому ящику.
        * password      Пароль пользователя.
        * domain_name   Почтовый домен пользователя.
        * iname         Имя пользователя.
        * fname         Фамилия пользователя.
        * sex           Пол пользователя:
                            0 – не указан
                            1 – мужской
                            2 – женский
        * hintq         Секретный вопрос.
        * hinta         Ответ на секретный вопрос.
        """

        request_url = 'https://pddimp.yandex.ru/edit_user.xml'
        request_args = {
            'token' :       token,
            'login' :       login,
            'password' :    password,
            'domain_name' : domain_name,
            'iname' :       iname,
            'fname' :       fname,
            'sex' :         sex,
            'hintq' :       hintq,
            'hinta' :       hinta,
        }
        response = api_call(request_url, request_args, response_type='yandex')
Example #2
0
    def import_imap(
        self, login, external_password,
        external_login='', password='', copy_one_folder=''):
        """Метод позволяет запустить импорт одной папки по IMAP.
        Метод запускает импорт одной IMAP папки пользователя.
        Если пользователь не существует, то он создается,
        и для него задается пароль.
        Старые письма из папки не удаляются, то есть повторно
        запущенный импорт заново скопирует в папку все письма.

        login               Имя почтового ящика.
        external_password   Пароль пользователя на сервере-источнике.
        * external_login    Логин пользователя на сервере-источнике.
                            Если логин на сервере-источнике совпадает
                            с логином создаваемого ящика,
                            то указывать параметр не надо.
        * password          Пароль пользователя в почте для доменов.
                            Параметр указывается только в случае
                            создания при импорте нового почтового
                            ящика. Если почтовый ящик существует,
                            параметр int_password игнорируется.
        * copy_one_folder   Имя папки,
                            которую надо импортировать по IMAP.
        """

        request_url = 'https://pddimp.yandex.ru/import_imap.xml'
        request_args = {
            'token' : self.token,
            'login' : login,
            'ext_login' : external_login,
            'ext_password' : external_password,
            'int_password' : password,
            'copy_one_folder' : copy_one_folder
        }
        response = api_call(request_url, request_args, response_type='yandex')
Example #3
0
    def set_domain(
        self, external_server,
        method='imap', extetnal_port='', use_ssl='', callback=''):
        """Метод позволяет сохранить настройки импорта для домена.

        external_server Доменное имя POP3 или IMAP сервера-источника.
        * method        Протокол: POP3 или IMAP.
        * extetnal_port Параметр указывается, если номер порта
                        отличается от стандартного.
                        Стандартные порты:
                            110 – POP3 без SSL
                            995 – POP3 с SSL
        * use_ssl       Параметр определяет, поддерживает ли сервер SSL.
                        Если соединение осуществляется по SSL,
                        параметр не указывается. В противном случае
                        необходимо указать значение 'no'.
        * callback      Если параметр не пустой, то по окончании импорта
                        пользовательского ящика выполняется HTTP-запрос
                        по этому адресу с параметром
                        login="******".
                        В случае корректного импорта запрос возвращает
                        XML-структуру вида:
                        <page><status>moved</status></page>.
        """

        request_url = 'https://pddimp.yandex.ru/set_domain.xml'
        request_args = {
            'token' : self.token,
            'ext_serv' : external_server,
            'method' : method,
            'ext_port' : external_port,
            'isssl' : use_ssl,
            'callback' : callback
        }
        response = api_call(request_url, request_args, response_type='yandex')
Example #4
0
    def reg_and_imp(
        self, login, password, external_password,
        external_login='', forwward_to='', forward_copy=''):
        """Метод позволяет зарегистрировать пользователя
        и запустить импорт его почты.

        login               Логин пользователя для доступа
                            к создаваемому почтовому ящику.
        password            Пароль пользователя в Яндекс.
        external_password   Пароль пользователя на сервере-источнике.
        * external_login    Логин пользователя на сервере-источнике.
                            Если логин на сервере-источнике совпадает с
                            логином создаваемого ящика, то указывать
                            параметр не надо.
        * forwward_to       Если параметр задан, то для ящика будет
                            выполнена переадресация на e-mail, заданный
                            в этом параметре.
        * forward_copy      Параметр имеет смысл только при заданном
                            fwd_email. Если fwd_copy задан и равен 0,
                            то после переадресации копии писем в текущем
                            ящике не сохраняются. В противном случае
                            копии писем сохраняются в текущем ящике.
        """

        request_url = 'https://pddimp.yandex.ru/reg_and_imp.xml'
        request_args = {
            'token' : self.token,
            'ext_login' : external_login,
            'inn_password' : password,
            'ext_password' : external_password,
            'fwd_email' : forwward_to,
            'fwd_copy' : forward_copy
        }
        response = api_call(request_url, request_args, response_type='yandex')
Example #5
0
    def get_domain_name(self):
        """Метод позволяет получить имя домена."""

        request_url = 'https://pddimp.yandex.ru/get_domain_users.xml'
        request_args = {'token' : self.token}
        response = api_call(request_url, request_args, response_type='yandex')

        domain_name = response[0].findtext('*/name')
        return domain_name
Example #6
0
    def dkim_disable(self, domain=''):
        """Метод позволяет отключить использование DKIM для домена.

        * domain    Имя домена, для которого следует отключить DKIM.
        """

        request_url = 'https://pddimp.yandex.ru/dkim/disable.xml'
        request_args = {'token' : self.token, 'domain' : domain}
        response = api_call(request_url, request_args, response_type='yandex')
Example #7
0
    def check_import(self, login):
        """Метод позволяет проверить состояние импорта почты.

        login   Логин нового пользователя в Яндекс,
                указывается часть адреса до символа '@'.
        """

        request_url = 'https://pddimp.yandex.ru/api/check_import.xml'
        request_args = {'token' : self.token, 'login' : login}
        response = api_call(request_url, request_args, response_type='yandex')
Example #8
0
    def stop_import(self, login):
        """Метод предназначен для остановки импорта почтового ящика.

        login   Логин нового пользователя в Яндекс,
                указывается часть адреса до символа '@'.
        """

        request_url = 'https://pddimp.yandex.ru/stop_import.xml'
        request_args = {'token' : self.token, 'login' : login}
        response = api_call(request_url, request_args, response_type='yandex')
Example #9
0
    def delete_general_maillist(self, domain=''):
        """Метод позволяет удалить общий список рассылки домена,
        включающий всех пользователей домена.

        * domain    Имя домена.
        """

        request_url = 'https://pddimp.yandex.ru/api/delete_general_maillist.xml'
        request_args = {'token' : self.token, 'domain' : domain}
        response = api_call(request_url, request_args, response_type='yandex')
Example #10
0
    def del_domain(self, domain=''):
        """Метод позволяет отключить домен.
        Отключенный домен перестает выводиться в списке доменов.
        После отключения домен можно подключить заново.

        * domain    Имя домена.
        """

        request_url = 'https://pddimp.yandex.ru/api/del_domain.xml'
        request_args = {'token' : self.token, 'domain' : domain}
        response = api_call(request_url, request_args, response_type='yandex')
Example #11
0
    def limit(self):
        """Возвращает текущеe состояниe дневного лимита."""

        request_url = 'http://sms.ru/my/limit'
        request_args = self.auth
        response = api_call(request_url, request_args, response_type='lines')

        if response[0] == '100':
            return response[1]
        else:
            raise StatusError(response[0])
Example #12
0
    def get_mail_info(self, login):
        """Метод позволяет получить количество непрочитанных писем.

        login   Имя почтового ящика.
        """

        request_url = 'https://pddimp.yandex.ru/get_mail_info.xml'
        request_args = {'token' : self.token, 'login' : login}
        response = api_call(request_url, request_args, response_type='yandex')

        return response[0].attrib['new_messages']
Example #13
0
    def balance(self):
        """Возвращает состояния баланса."""

        request_url = 'http://sms.ru/my/balance'
        request_args = self.auth
        response = api_call(request_url, request_args, response_type='lines')

        if response[0] == '100':
            return response[1]
        else:
            raise StatusError(response[0])
Example #14
0
    def senders(self):
        """Возвращает список возможных отправителей."""

        request_url = 'http://sms.ru/my/senders'
        request_args = self.auth
        response = api_call(request_url, request_args, response_type='lines')

        if response[0] == '100':
            senders_list = response[1:-1]
            return senders_list
        else:
            raise StatusError(response[0])
Example #15
0
    def stoplist_get(self):
        """Возвращает черный список (объект dict)."""

        request_url = 'http://sms.ru/stoplist/get'
        request_args = self.auth
        response = api_call(request_url, request_args, response_type='lines')
        
        if response[0] == '100':
            response = response[1:]
            return dict(phone_number.split(';') for phone_number in response)
        else:
            raise StatusError(response[0])
Example #16
0
    def auth_get_token(self):
        """Получение временного ключа,
        с помощью которого в дальнейшем шифруется пароль.
        Используется в методах, требущих усиленную авторизацию.
        Закреплен за вашим IP адресом
        и работает только в течение 10 минут.
        """

        request_url = 'http://sms.ru/auth/get_token'
        request_args = self.auth
        response = api_call(request_url, request_args, response_type='raw')
        self.token = response
Example #17
0
    def stoplist_delete(self, stoplist_phone):
        """Метод позволяет удалить один телефонный номер из черного списка.

        stoplist_phone  Номер телефона.
        """

        request_url = 'http://sms.ru/stoplist/del'
        request_args = {'stoplist_phone' : stoplist_phone}
        request_args.update(self.auth)
        response = api_call(request_url, request_args, response_type='raw')

        if response != '100':
            raise StatusError(response)
Example #18
0
    def user_exists(self, login):
        """Метод позволяет проверить существование пользователя.

        login   Логин пользователя для доступа к почтовому ящику.
        """

        request_url = 'https://pddimp.yandex.ru/check_user.xml'
        request_args = {'token' : self.token, 'login' : login}
        response = api_call(request_url, request_args, response_type='yandex')

        if response[0].text == 'nouser':
            return False
        else:
            return True
Example #19
0
    def get_admins(self, domain=''):
        """Метод позволяет получить
        список дополнительных администраторов домена.

        * domain    Имя домена, для которого следует получить список
                    дополнительных администраторов.
        """

        request_url = 'https://pddimp.yandex.ru/api/multiadmin/get_admins.xml'
        request_args = {'token' : self.token, 'domain' : domain}
        response = api_call(request_url, request_args, response_type='yandex')

        admins = list(admin.text for admin in response.iter('login'))
        return admins
Example #20
0
    def reg_user(self, login, password):
        """Метод предназначен для регистрации пользователя.

        login       Логин пользователя для доступа к почтовому ящику.
        password    Пароль пользователя для доступа к почтовому ящику.
        """

        request_url = 'https://pddimp.yandex.ru/reg_user_token.xml'
        request_args = {
            'token' : self.token,
            'u_login' : login,
            'u_password' : password
        }
        response = api_call(request_url, request_args, response_type='yandex')
Example #21
0
    def del_user(self, login, domain=''):
        """Метод позволяет удалить почтовый ящик в неосновном домене.

        login       Имя почтового ящика.
        * domain    Имя домена.
        """

        request_url = 'https://pddimp.yandex.ru/api/del_user.xml'
        request_args = {
            'token' : self.token,
            'domain' : domain,
            'login' : login
        }
        response = api_call(request_url, request_args, response_type='yandex')
Example #22
0
    def delete_forward(self, login, filter_id):
        """Метод позволяет удалить переадресацию или фильтр.

        login       Логин пользователя для доступа к почтовому ящику.
        filter_id   ID фильтра, который надо удалить.
        """

        request_url = 'https://pddimp.yandex.ru/delete_forward.xml'
        request_args = {
            'token' : self.token,
            'login' : login,
            'filter_id' : filter_id
        }
        response = api_call(request_url, request_args, response_type='yandex')
Example #23
0
    def create_general_maillist(self, list_name, domain=''):
        """Метод позволяет создать общий список рассылки домена,
        включающий всех пользователей домена.

        list_name   Имя общего списка рассылки.
        * domain    Имя домена.
        """

        request_url = 'https://pddimp.yandex.ru/api/create_general_maillist.xml'
        request_args = {
            'token' : self.token,
            'domain' : domain,
            'ml_name' : list_name
        }
        response = api_call(request_url, request_args, response_type='yandex')
Example #24
0
    def reg_domain(self, domain=''):
        """Метод позволяет подключить домен.

        * domain    Имя домена.
        """

        request_url = 'https://pddimp.yandex.ru/api/reg_domain.xml'
        request_args = {'token' : self.token, 'domain' : domain}
        response = api_call(request_url, request_args, response_type='yandex')

        secret = {
            'secret_name' : response[1].findtext('*/secret_name'),
            'secret_value' : response[1].findtext('*/secret_value')
        }
        return secret
Example #25
0
    def get_user_info(self, login):
        """Метод позволяет получить данные пользователя.

        login   Логин пользователя, для которого необходимо получить
                данные.
        """

        request_url = 'https://pddimp.yandex.ru/get_user_info.xml'
        request_args = {'token' : self.token, 'login' : login}
        response = api_call(request_url, request_args, response_type='yandex')

        user_info = dict(
            (info.tag, info.text) for info in response[0][1].getchildren()
        )
        return user_info
Example #26
0
    def reg_default_user(self, login, domain=''):
        """Метод позволяет задать почтовый ящик по умолчанию для домена.

        login       Имя почтового ящика.
                    Ящик с именем login должен уже существовать.
        * domain    Имя домена.
        """

        request_url = 'https://pddimp.yandex.ru/api/reg_default_user.xml'
        request_args = {
            'token' : self.token,
            'domain' : domain,
            'login' : login
        }
        response = api_call(request_url, request_args, response_type='yandex')
Example #27
0
    def del_admin(self, login, domain=''):
        """Метод позволяет удалить
        дополнительного администратора для домена.

        login       Яндекс-логин дополнительного администратора.
        * domain    Имя домена, для которого удаляется дополнительный
                    администратор.
        """

        request_url = 'https://pddimp.yandex.ru/api/multiadmin/del_admin.xml'
        request_args = {
            'token' : self.token,
            'domain' : domain,
            'login' : login
        }
        response = api_call(request_url, request_args, response_type='yandex')
Example #28
0
    def status(self, sms_id):
        """Возвращает статус отправленного сообщения.

        sms_id  Идентификатор сообщения,
                полученный при использовании метода send.
        """

        request_url = 'http://sms.ru/sms/status'
        request_args = { 'id' : sms_id }
        request_args.update(self.auth)
        response = api_call(request_url, request_args)

        if response == SMS_SENT or response == SMS_DELIVERED:
            return response
        else:
            raise StatusError(response)
Example #29
0
    def get_forward_list(self, login):
        """Метод позволяет получить список переадресаций и фильтров.

        login   Логин пользователя для доступа к почтовому ящику.
        """

        request_url = 'https://pddimp.yandex.ru/get_forward_list.xml'
        request_args = {'token' : self.token, 'login' : login}
        response = api_call(request_url, request_args, response_type='yandex')

        filters = list(
            dict(
                (info.tag, info.text) for info in filter_item.getchildren()
            ) for filter_item in response[0][0].getchildren()
        )

        return filters
Example #30
0
    def dns_delete_record(self, record_id, domain=''):
        """Метод предназначен для удаления записей.

        record_id   Идентификатор записи.
                    Идентификатор содержится в значении атрибута id
                    в каждом элементе списка self.dns_records.
        * domain    Имя домена, для которого удаляется DNS-запись.
        """

        request_url = 'https://pddimp.yandex.ru/nsapi/delete_record.xml'
        request_args = {
            'token' : self.token,
            'domain' : domain,
            'record_id' : record_id
        }
        response = api_call(request_url, request_args, response_type='yandex')
        self.dns_records = self.dns_get_records()