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')
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')
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')
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')
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
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')
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')
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')
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')
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')
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])
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']
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])
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])
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])
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
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)
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
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
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')
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')
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')
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')
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
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
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')
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')
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)
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
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()