Skip to main content

Mailing services with HTTP Api

Project description

💨💨💨 Pyuubin – Mailing System 💨💨💨

Build Status

Asynchronous mailing system over HTTP API.

郵便 (Yūbin) - Postal Service

ぴゅー (Pyu-) – SFX for a sudden burst of speed, like running away from something

Installation

pip install pyuubin

Installation from source

pip install .

Running the service

You need to run the API and Worker for the system to work.

The API

Use hypercorn or uvicorn to run it

hypercorn pyuubin.api.app:app --access-log - --error-log -

The Worker

$ python -m pyuubin.worker --help
Usage: worker.py [OPTIONS]

  Run the worker.

Options:
  -n, --name TEXT                 Name of the service
  -w, --workers INTEGER           Number of workers
  -d, --debug                     Enable debug mode.
  -e, --print-environment-variables
                                  print environment variables to be put in
                                  .env file for configuration
  --help                          Show this message and exit.

Configuration

You can configure Pyuubin by using environmental variables. List of variables is available on running

$ python -m pyuubin -e
PYUUBIN_REDIS_PREFIX=pyuubin:
PYUUBIN_REDIS_MAIL_QUEUE=pyuubin::mail_queue
PYUUBIN_REDIS_URL=redis://localhost:6379
PYUUBIN_SMTP_HOST=smtp.gmail.com
PYUUBIN_SMTP_PORT=465
PYUUBIN_SMTP_USER=email@gmail.com
PYUUBIN_SMTP_PASSWORD=SecretStr('**********')
PYUUBIN_SMTP_TLS=True
PYUUBIN_MAIL_FROM=email@gmail.com
PYUUBIN_MAIL_RETURN=returns@exampple.tld
PYUUBIN_MAIL_CONNECTOR=pyuubin.connectors.smtp
PYUUBIN_AUTH_HTPASSWD_FILE=

Note that the password is a SecretStr type from pydantic, so in your .env. file please just write your password without SecretStr(), so actually what you want is: PYUUBIN_SMTP_PASSWORD=secret

Pyuubin supports .env files. You can create one quite easily by running above command and directing the output to a .env file.

$ python -m pyuubin -e > .env
$

Then edit this file, put the values required and run the app.

Authentication - Password File

Generating passwords with htpasswd:

htpasswd -Bc test_htpasswd app1

Note: Only blowfish encrypted hashes are supported

API Specification

You can find API docs here: redoc pages

TODO

  • Documentation
  • Client library
  • Handling of rejected/failed mails
  • Bounces management
  • Rate limitting for source / global

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyuubin-0.1.1.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

pyuubin-0.1.1-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file pyuubin-0.1.1.tar.gz.

File metadata

  • Download URL: pyuubin-0.1.1.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.17 CPython/3.7.1 Linux/4.15.0-1028-gcp

File hashes

Hashes for pyuubin-0.1.1.tar.gz
Algorithm Hash digest
SHA256 9efa23d3b3f3d98d630282ed0b4c4b010be833aa54940c38529ae252a9540f62
MD5 6ad746e89b993804447f201a2acb57ef
BLAKE2b-256 d1a82b3e1c5433009c68e55024b975b5ad8dbc760f320dab19672494d06af290

See more details on using hashes here.

File details

Details for the file pyuubin-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pyuubin-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 15.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.17 CPython/3.7.1 Linux/4.15.0-1028-gcp

File hashes

Hashes for pyuubin-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5c8df8d9aff33bfe1d0563327ebf4ceab8ac90036060cb290f9e8fb3edd749f5
MD5 479ff6e9c0f3440bd634176c96368742
BLAKE2b-256 d12ae20fb741552d49fd27e17ae42149d9b8698c409e3f744770b201685298a7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page