smsaero-smpp


Namesmsaero-smpp JSON
Version 1.0.1 PyPI version JSON
download
home_pagehttps://github.com/smsaero/smsaero_python_smpp/
SummarySMS Aero SMPP Lib
upload_time2025-02-21 18:40:30
maintainerSmsAero Team
docs_urlNone
authorSmsAero
requires_python>=3.6
licenseMIT
keywords smsaero smpp smsaero_smpp sms hlr viber
VCS
bugtrack_url
requirements smpplib phonenumbers
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/smsaero/smsaero_python_smpp/",
    "name": "smsaero-smpp",
    "maintainer": "SmsAero Team",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "support@smsaero.ru",
    "keywords": "smsaero, smpp, smsaero_smpp, sms, hlr, viber",
    "author": "SmsAero",
    "author_email": "admin@smsaero.ru",
    "download_url": "https://files.pythonhosted.org/packages/78/84/dbe658ff6d907784674fa59bc5421ba94b8b9ddd93b96ed8d27281a546de/smsaero_smpp-1.0.1.tar.gz",
    "platform": "any",
    "description": "# Python \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 SMS \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 SMPP \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043d\u0430 \u0441\u0435\u0440\u0432\u0438\u0441 SMS Aero \n\n[![PyPI version](https://badge.fury.io/py/smsaero-smpp.svg)](https://badge.fury.io/py/smsaero-smpp)\n[![Python Versions](https://img.shields.io/pypi/pyversions/smsaero-smpp.svg)](https://pypi.org/project/smsaero-smpp/)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](MIT-LICENSE)\n\n## \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 pip:\n\n```bash\npip install smsaero-smpp\n```\n\n## \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u043e\u0434\u0435:\n\n\u041b\u043e\u0433\u0438\u043d \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 IP-\u0430\u0434\u0440\u0435\u0441\n\u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 https://smsaero.ru/cabinet/settings/apikey/, \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 \"SMPP-\u0434\u043e\u0441\u0442\u0443\u043f\u044b\".\n\n```python\nfrom smsaero_smpp import SmsAeroSmpp\n\n\nSMSAERO_USER = '\u0432\u0430\u0448 \u043b\u043e\u0433\u0438\u043d'\nSMSAERO_PASS = '\u0432\u0430\u0448 \u043f\u0430\u0440\u043e\u043b\u044c'\n\n\ndef send_sms(phone: str, message: str) -> None:\n    \"\"\"\n    \u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 SMS \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\n\n    \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:\n    phone (int): \u041d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430.\n    message (str): \u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 SMS \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.\n    \"\"\"\n    client = SmsAeroSmpp(\n        login=SMSAERO_USER,\n        password=SMSAERO_PASS,\n        source='SMS Aero',\n    )\n    \n    try:\n        result = client.send_sms(phone, message)\n        print(result)\n    except ValueError as e:\n        print(f\"\u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438: {e}\")\n    except ConnectionError as e:\n        print(f\"\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f: {e}\")\n\n\nif __name__ == '__main__':\n    send_sms('+79038805678', '\u041f\u0440\u0438\u0432\u0435\u0442, \u043c\u0438\u0440!')\n```\n\n## \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 (\u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438):\n\n```bash\nexport SMSAERO_USER=\"\u0432\u0430\u0448 \u043b\u043e\u0433\u0438\u043d\"\nexport SMSAERO_PASS=\"\u0432\u0430\u0448 \u043f\u0430\u0440\u043e\u043b\u044c\"\n\nsmsaero_smpp_send \\\n    --login \"$SMSAERO_USER\" \\\n    --password \"$SMSAERO_PASS\" \\\n    --phone +79038805678 \\\n    --message '\u041f\u0440\u0438\u0432\u0435\u0442, \u043c\u0438\u0440!' \\\n    --debug  # \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0433\u043e \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\n```\n\n## \u0417\u0430\u043f\u0443\u0441\u043a \u0432 Docker (demo):\n\n```bash\ndocker pull 'smsaero/smsaero_python_smpp:latest'\n\ndocker run -it --rm smsaero/smsaero_python_smpp:latest \\\n    smsaero_smpp_send \\\n    --login \"\u0432\u0430\u0448 \u043b\u043e\u0433\u0438\u043d\" \\\n    --password \"\u0432\u0430\u0448 \u043f\u0430\u0440\u043e\u043b\u044c\" \\\n    --phone +79038805678 \\\n    --message '\u041f\u0440\u0438\u0432\u0435\u0442, \u043c\u0438\u0440!'\n```\n\n## \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\n\n* `SmsAeroConnectionError` - \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a SMPP \u0441\u0435\u0440\u0432\u0435\u0440\u0443 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, IP \u043d\u0435 \u0432 \u0431\u0435\u043b\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435)\n* `ValueError` - \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 (\u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, IP, \u043f\u043e\u0440\u0442\u0430 \u0438 \u0442.\u0434.)\n\n### \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438\n\n- `--ip` - IP \u0430\u0434\u0440\u0435\u0441 SMPP \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: 82.202.194.38)\n- `--port` - \u041f\u043e\u0440\u0442 SMPP \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: 2775)\n- `--source` - \u0418\u043c\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044f (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: SMS Aero)\n\n## \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438\n\n- \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 (\u0434\u043e 960 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432)\n- \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u043d\u043e\u043c\u0435\u0440\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\n- \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043d\u043e\u043c\u0435\u0440\u043e\u0432\n- \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438\n\n## \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\n\n- Python 3.6+\n- smpplib\n- phonenumbers\n\n## \u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f\n\nMIT License\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "SMS Aero SMPP Lib",
    "version": "1.0.1",
    "project_urls": {
        "Bug Tracker": "https://github.com/smsaero/smsaero_python_smpp/issues",
        "Download": "https://github.com/smsaero/smsaero_python_smpp/archive/refs/tags/1.0.1.tar.gz",
        "Help Center": "https://smsaero.ru/support/",
        "Homepage": "https://smsaero.ru/",
        "Repository": "https://github.com/smsaero/smsaero_python_smpp/"
    },
    "split_keywords": [
        "smsaero",
        " smpp",
        " smsaero_smpp",
        " sms",
        " hlr",
        " viber"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "313db99f15ac3c8f3a221fc0b166abec5b6aa3c84fdadeecbb2500e99d0b80da",
                "md5": "786bd793df45e72a4fe67c323ce584ad",
                "sha256": "ad936b68e61f8251652f2316191e7128bc68c3e238a199531baa286adc16b37b"
            },
            "downloads": -1,
            "filename": "smsaero_smpp-1.0.1-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "786bd793df45e72a4fe67c323ce584ad",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": ">=3.6",
            "size": 17184,
            "upload_time": "2025-02-21T18:40:28",
            "upload_time_iso_8601": "2025-02-21T18:40:28.676589Z",
            "url": "https://files.pythonhosted.org/packages/31/3d/b99f15ac3c8f3a221fc0b166abec5b6aa3c84fdadeecbb2500e99d0b80da/smsaero_smpp-1.0.1-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7884dbe658ff6d907784674fa59bc5421ba94b8b9ddd93b96ed8d27281a546de",
                "md5": "28006c53b2472b1083efc6799b24be7c",
                "sha256": "3cfc8aaefbaa8fd4306a0ed99c9971bf17e16e6252b16da8d79a106371d0239e"
            },
            "downloads": -1,
            "filename": "smsaero_smpp-1.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "28006c53b2472b1083efc6799b24be7c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 18760,
            "upload_time": "2025-02-21T18:40:30",
            "upload_time_iso_8601": "2025-02-21T18:40:30.946076Z",
            "url": "https://files.pythonhosted.org/packages/78/84/dbe658ff6d907784674fa59bc5421ba94b8b9ddd93b96ed8d27281a546de/smsaero_smpp-1.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-21 18:40:30",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "smsaero",
    "github_project": "smsaero_python_smpp",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "smpplib",
            "specs": [
                [
                    ">=",
                    "2.2"
                ]
            ]
        },
        {
            "name": "phonenumbers",
            "specs": [
                [
                    ">=",
                    "8.13"
                ]
            ]
        }
    ],
    "tox": true,
    "lcname": "smsaero-smpp"
}
        
Elapsed time: 0.86459s