YesssSMS 0.8.1
YesssSMS let's you send SMS via yesss.at's website.
License: MIT
Requires Python: >=3.8
Keywords: SMS,Yesss,messaging

# YesssSMS

[![Package status](https://img.shields.io/badge/status-broken-red)](https://gitlab.com/flowolf/yessssms/#status) [![Python version](https://img.shields.io/pypi/pyversions/yessssms.svg)](https://gitlab.com/flowolf/yessssms) [![Gitlab CI Badge](https://gitlab.com/flowolf/yessssms/badges/master/pipeline.svg)](https://gitlab.com/flowolf/yessssms/pipelines) [![coverage report](https://gitlab.com/flowolf/yessssms/badges/master/coverage.svg)](https://gitlab.com/flowolf/yessssms/commits/master) [![pypi version](https://img.shields.io/pypi/v/yessssms.svg?color=blue)](https://pypi.org/project/yessssms) [![dev version](https://img.shields.io/badge/dynamic/json?color=yellow&label=dev&query=version&url=https%3A%2F%2Fgitlab.com%2Fflowolf%2Fyessssms%2Fraw%2Fmaster%2FYesssSMS%2Fversion.json&prefix=v)](https://gitlab.com/flowolf/yessssms) [![license](https://img.shields.io/pypi/l/yessssms.svg)](https://gitlab.com/flowolf/yessssms/blob/master/LICENSE.txt) [![documentation](https://img.shields.io/badge/sphinx-docs-blue)](https://flowolf.gitlab.io/yessssms/) [![downloads](https://img.shields.io/pypi/dm/yessssms)](https://pypi.org/project/yessssms)

## Status

It appears that Yesss has pulled the web SMS feature from their customer page in February 2023. This unfortunately breaks YesssSMS. Other MVNOs are probably also broken.

## YesssSMS

YesssSMS let's you send SMS via yesss.at's website. Regular rates apply and a
contract or prepaid plan is needed.

Alternatively you can use MVNOs (Mobile Virtual Network Operators) that use the kontomanager.at web interface.
These include:

<img align="right" src="https://gitlab.com/flowolf/yessssms/raw/master/logo/all.png" style="float:right;" />

- YESSS
- billitel
- EDUCOM
- fenercell
- georg
- goood
- kronemobile
- kuriermobil
- SIMfonie
- teleplanet
- WOWWW
- yooopi

Use your website login and password.

use the `--mvno` flag to set your provider, or define it in the config file.

This module is not suitable for batch SMS sending.
Each send() call logs in and out of your provider's website.

Currently the library supports Python 3.8+, and is [tested against Python 3.8 to 3.11](https://gitlab.com/flowolf/yessssms/-/jobs).

### Install

```bash
> pip3 install YesssSMS
```

### Usage

```python
>>> from YesssSMS import YesssSMS
>>> sms = YesssSMS(YOUR_LOGIN, YOUR_PASSWORD)
>>> sms.send(TO_NUMBER, "Message")
>>> # or with a different MVNO:
>>> sms = YesssSMS(YOUR_LOGIN, YOUR_PASSWORD, provider="goood")
>>> sms.send(TO_NUMBER, "Message")
```

```python
# login environment variables set
>>> from YesssSMS import YesssSMS
>>> sms = YesssSMS()
>>> sms.send("06641234567", "hello future self, your pipeline failed :(")
```

```python
# sending multiple SMS
from YesssSMS import YesssSMS
import requests
sms = YesssSMS()
with sms._login(requests.Session()) as sess:
    sms._send(session=sess, recipient="06641234567", message="hi! I have a new number +43650-555-1234")
    sms._send(session=sess, recipient="06509876543", message="Meine neue Handynummer: +43650-555-1234")
    sms._send(session=sess, recipient="06760001256", message="I changed my number to +43650-555-1234")
    sms._logout()
```

### Command Line Usage

```bash
> yessssms --print-config-file > ~/.config/yessssms.conf
# edit the config file, set a login, password, default recipient, and MVNO
> vi ~/.config/yessssms.conf
> yessssms --test # test your setup, send yourself a message
> yessssms -t 0664123123123 -m "sending SMS from the command line :)"

> # if a default recipient is defined, you can omit the -t flag
> # the message can be piped into yessssms (it will be cut to max 3 SMS, 3*160 chars)
> echo "important message!" | yessssms -m -

> # MVNO
> yessssms --to 06501234567 --mvno educom -m "sending SMS using a MVNO"
```

```bash
# set environment variables to avoid parameters or config files;
# great for pipelines
> export YESSSSMS_LOGIN=06641234567
> export YESSSSMS_PASSWD=myverysecretsecret
> export YESSSSMS_PROVIDER=wowww
> export YESSSSMS_RECIPIENT=06641234567
# use in python script or in command line
> yessssms -T
ok: login data is valid.
> yessssms -m "sending SMS from github and gitlab pipelines... so much cloud"
```