Metadata-Version: 2.1
Name: smsaero_smpp
Version: 1.0.0
Summary: SMS Aero SMPP Lib
Home-page: https://github.com/smsaero/smsaero_python_smpp_example/
Download-URL: https://github.com/smsaero/smsaero_python_smpp_example/archive/refs/tags/1.0.0.tar.gz
Author: SmsAero
Author-email: admin@smsaero.ru
Maintainer: SmsAero Team
Maintainer-email: support@smsaero.ru
License: MIT
Project-URL: Homepage, https://smsaero.ru/
Project-URL: Repository, https://github.com/smsaero/smsaero_python_smpp_example/
Project-URL: Bug Tracker, https://github.com/smsaero/smsaero_python_smpp_example/issues
Project-URL: Help Center, https://smsaero.ru/support/
Keywords: smsaero,smpp,smsaero_smpp,sms,hlr,viber
Platform: any
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Communications :: Telephony
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: AUTHORS.md
Requires-Dist: setuptools
Requires-Dist: smpplib
Requires-Dist: phonenumbers
Provides-Extra: dev
Requires-Dist: pytest>=8.2.2; extra == "dev"
Requires-Dist: flake8>=7.1.0; extra == "dev"
Requires-Dist: ruff>=0.4.10; extra == "dev"
Requires-Dist: pylint>=3.2.4; extra == "dev"
Requires-Dist: tox>=4.15.1; extra == "dev"
Requires-Dist: mypy>=1.10.0; extra == "dev"
Requires-Dist: coverage>=7.5.4; extra == "dev"
Requires-Dist: bandit>=1.7.9; extra == "dev"
Requires-Dist: build>=1.2.1; extra == "dev"
Requires-Dist: twine>=5.1.1; extra == "dev"

# Python библиотека для отправки SMS сообщений через SMPP протокол на сервис SMS Aero 

[![PyPI version](https://badge.fury.io/py/smsaero-smpp.svg)](https://badge.fury.io/py/smsaero-smpp)
[![Python Versions](https://img.shields.io/pypi/pyversions/smsaero-smpp.svg)](https://pypi.org/project/smsaero-smpp/)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](MIT-LICENSE)

## Установка с использованием пакетного менеджера pip:

```bash
pip install smsaero-smpp
```

## Пример использования в коде:

Логин и пароль Вы можете добавить в настройках аккаунта, включая статический IP-адрес
на странице https://smsaero.ru/cabinet/settings/apikey/, в секции "SMPP-доступы".

```python
from smsaero_smpp import SmsAeroSmpp


SMSAERO_USER = 'ваш логин'
SMSAERO_PASS = 'ваш пароль'


def send_sms(phone: str, message: str) -> None:
    """
    Отправка SMS сообщения

    Параметры:
    phone (int): Номер телефона.
    message (str): Содержание SMS сообщения.
    """
    client = SmsAeroSmpp(
        login=SMSAERO_USER,
        password=SMSAERO_PASS,
        source='SMS Aero',
    )
    
    try:
        result = client.send_sms(phone, message)
        print(result)
    except ValueError as e:
        print(f"Ошибка валидации: {e}")
    except ConnectionError as e:
        print(f"Ошибка подключения: {e}")


if __name__ == '__main__':
    send_sms('+79038805678', 'Привет, мир!')
```

## Использование в командной строке (полезно для автоматизации):

```bash
export SMSAERO_USER="ваш логин"
export SMSAERO_PASS="ваш пароль"

smsaero_smpp_send \
    --login "$SMSAERO_USER" \
    --password "$SMSAERO_PASS" \
    --phone +79038805678 \
    --message 'Привет, мир!' \
    --debug  # опционально для включения подробного логирования
```

## Запуск в Docker (demo):

```bash
docker pull 'smsaero/smsaero_python_smpp:latest'

docker run -it --rm smsaero/smsaero_python_smpp:latest \
    smsaero_smpp_send \
    --login "ваш логин" \
    --password "ваш пароль" \
    --phone +79038805678 \
    --message 'Привет, мир!'
```

## Исключения

* `SmsAeroConnectionError` - исключение при ошибке подключения к SMPP серверу (например, IP не в белом списке)
* `ValueError` - исключение при некорректных входных данных (неверный формат телефона, IP, порта и т.д.)

### Дополнительные параметры командной строки

- `--ip` - IP адрес SMPP сервера (по умолчанию: 82.202.194.38)
- `--port` - Порт SMPP сервера (по умолчанию: 2775)
- `--source` - Имя отправителя (по умолчанию: SMS Aero)

## Особенности

- Поддержка длинных сообщений (до 960 символов)
- Автоматическая валидация номера телефона
- Поддержка международного формата номеров
- Подробное логирование при необходимости

## Требования

- Python 3.6+
- smpplib
- phonenumbers

## Лицензия

MIT License
