{ "info": { "author": "Michal Mazurek", "author_email": "mazurek.michal@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: Free To Use But Restricted", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Topic :: Communications :: Email" ], "description": "# \ud83d\udca8\ud83d\udca8\ud83d\udca8 Pyuubin \u2013 Mailing System \ud83d\udca8\ud83d\udca8\ud83d\udca8\n\n[![Build Status](https://travis-ci.org/MichalMazurek/pyuubin.svg?branch=master)](https://travis-ci.org/MichalMazurek/pyuubin)\n\nAsynchronous mailing system over HTTP API.\n\n\u90f5\u4fbf (Y\u016bbin) - Postal Service\n\n\u3074\u3085\u30fc (Pyu-) \u2013 SFX for a sudden burst of speed, like running away from something\n\n## Installation\n\n```bash\npip install pyuubin\n```\n\n## Installation from source\n\n```bash\npip install .\n```\n\n## Running the service\n\nYou need to run the API and Worker for the system to work.\n\n### The API\n\nUse hypercorn or uvicorn to run it\n\n```bash\nhypercorn pyuubin.api.app:app --access-log - --error-log -\n```\n\n### The Worker\n\n```bash\n$ python -m pyuubin.worker --help\nUsage: worker.py [OPTIONS]\n\n Run the worker.\n\nOptions:\n -n, --name TEXT Name of the service\n -w, --workers INTEGER Number of workers\n -d, --debug Enable debug mode.\n -e, --print-environment-variables\n print environment variables to be put in\n .env file for configuration\n --help Show this message and exit.\n```\n\n## Configuration\n\nYou can configure Pyuubin by using environmental variables. List of variables is available on running\n\n```bash\n$ python -m pyuubin -e\nPYUUBIN_REDIS_PREFIX=pyuubin:\nPYUUBIN_REDIS_MAIL_QUEUE=pyuubin::mail_queue\nPYUUBIN_REDIS_URL=redis://localhost:6379\nPYUUBIN_SMTP_HOST=smtp.gmail.com\nPYUUBIN_SMTP_PORT=465\nPYUUBIN_SMTP_USER=email@gmail.com\nPYUUBIN_SMTP_PASSWORD=SecretStr('**********')\nPYUUBIN_SMTP_TLS=True\nPYUUBIN_MAIL_FROM=email@gmail.com\nPYUUBIN_MAIL_RETURN=returns@exampple.tld\nPYUUBIN_MAIL_CONNECTOR=pyuubin.connectors.smtp\nPYUUBIN_AUTH_HTPASSWD_FILE=\n```\n\n> 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`\n\nPyuubin supports `.env` files. You can create one quite easily by running above command and directing the output to a `.env` file.\n\n```bash\n$ python -m pyuubin -e > .env\n$\n```\n\nThen edit this file, put the values required and run the app.\n\n## Authentication - Password File\n\nGenerating passwords with htpasswd:\n\n```bash\nhtpasswd -Bc test_htpasswd app1\n```\n\n> Note: Only blowfish encrypted hashes are supported\n\n## API Specification\n\nYou can find API docs here: [redoc pages](https://pyuubin.io/docs/index.html)\n\n## TODO\n\n- Documentation\n- Client library\n- Handling of rejected/failed mails\n- Bounces management\n- Rate limitting for source / global\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://pyuubin.io", "keywords": "", "license": "Apache-2.0", "maintainer": "Michal Mazurek", "maintainer_email": "mazurek.michal@gmail.com", "name": "pyuubin", "package_url": "https://pypi.org/project/pyuubin/", "platform": "", "project_url": "https://pypi.org/project/pyuubin/", "project_urls": { "Documentation": "https://pyuubin.io", "Homepage": "https://pyuubin.io", "Repository": "https://github.com/MichalMazurek/pyuubin.git" }, "release_url": "https://pypi.org/project/pyuubin/0.1.1/", "requires_dist": [ "jinja2 (>=2.10,<3.0)", "aiosmtplib (>=1.0,<2.0)", "click (>=7.0,<8.0)", "aioredis (>=1.2,<2.0)", "msgpack (>=0.6.1,<0.7.0)", "html2text (>=2018.1,<2019.0)", "trio (>=0.11.0,<0.12.0)", "envparse (>=0.2.0,<0.3.0)", "bcrypt (>=3.1,<4.0)", "tblib (>=1.3,<2.0)", "coloredlogs (>=10.0,<11.0)", "hypercorn (>=0.6.0,<0.7.0)", "pydantic (>=0.32.2,<0.33.0)", "fastapi (>=0.38.1,<0.39.0)", "python-dotenv (>=0.10.3,<0.11.0)", "email-validator (>=1.0,<2.0)" ], "requires_python": ">=3.7,<4.0", "summary": "Mailing services with HTTP Api", "version": "0.1.1" }, "last_serial": 5831721, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "fa622cf1f72b274a0856a96e1e3a0ceb", "sha256": "a23d484c6aca5e468a267c89a6b61a2ce2d6cb19dc86e1f83fe37b49277bc4e9" }, "downloads": -1, "filename": "pyuubin-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "fa622cf1f72b274a0856a96e1e3a0ceb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 13974, "upload_time": "2019-09-15T11:21:15", "url": "https://files.pythonhosted.org/packages/c2/2f/246e12ea96079a5f91d92ed52ad7aa15c7da885cc5c79dd7a70da8af5107/pyuubin-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c374ed33f07829ebfa60986600e3a021", "sha256": "c79851278170e3bb6dd75f7d5e19e2189c212bb27214eee3fae0df1477717a58" }, "downloads": -1, "filename": "pyuubin-0.1.0.tar.gz", "has_sig": false, "md5_digest": "c374ed33f07829ebfa60986600e3a021", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 9707, "upload_time": "2019-09-15T11:21:17", "url": "https://files.pythonhosted.org/packages/b0/01/c079f3648a7ad43a4c00d520426fc5fe37a698add862dd5899cfc4474313/pyuubin-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "479ff6e9c0f3440bd634176c96368742", "sha256": "5c8df8d9aff33bfe1d0563327ebf4ceab8ac90036060cb290f9e8fb3edd749f5" }, "downloads": -1, "filename": "pyuubin-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "479ff6e9c0f3440bd634176c96368742", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 15351, "upload_time": "2019-09-15T12:15:07", "url": "https://files.pythonhosted.org/packages/d1/2a/e20fb741552d49fd27e17ae42149d9b8698c409e3f744770b201685298a7/pyuubin-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6ad746e89b993804447f201a2acb57ef", "sha256": "9efa23d3b3f3d98d630282ed0b4c4b010be833aa54940c38529ae252a9540f62" }, "downloads": -1, "filename": "pyuubin-0.1.1.tar.gz", "has_sig": false, "md5_digest": "6ad746e89b993804447f201a2acb57ef", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 12558, "upload_time": "2019-09-15T12:15:09", "url": "https://files.pythonhosted.org/packages/d1/a8/2b3e1c5433009c68e55024b975b5ad8dbc760f320dab19672494d06af290/pyuubin-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "479ff6e9c0f3440bd634176c96368742", "sha256": "5c8df8d9aff33bfe1d0563327ebf4ceab8ac90036060cb290f9e8fb3edd749f5" }, "downloads": -1, "filename": "pyuubin-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "479ff6e9c0f3440bd634176c96368742", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 15351, "upload_time": "2019-09-15T12:15:07", "url": "https://files.pythonhosted.org/packages/d1/2a/e20fb741552d49fd27e17ae42149d9b8698c409e3f744770b201685298a7/pyuubin-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6ad746e89b993804447f201a2acb57ef", "sha256": "9efa23d3b3f3d98d630282ed0b4c4b010be833aa54940c38529ae252a9540f62" }, "downloads": -1, "filename": "pyuubin-0.1.1.tar.gz", "has_sig": false, "md5_digest": "6ad746e89b993804447f201a2acb57ef", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 12558, "upload_time": "2019-09-15T12:15:09", "url": "https://files.pythonhosted.org/packages/d1/a8/2b3e1c5433009c68e55024b975b5ad8dbc760f320dab19672494d06af290/pyuubin-0.1.1.tar.gz" } ] }