Skip to main content

An asynchronous mail server

Project description

PyPI PyPI - Python Version Read the Docs (version)

PyMailIO

An Asynchronous mail server that's built on CPython's AsyncIO library.

Read the docs: Documentation

pip install pymail-io

# Install & run Redis
docker run redis

Quick Start

Run PyMailIO as a complete emailing solution:

from pymail_io.pymailio_task import Task

p = Task(
    password="wizard",
    receiver_email="joe@blogs.com", # Or a list of emails receiver_email=["joe@blogs.com", ...],
    sender_email="your_email@gmail.com",
    email_host="smtp.gmail.com",
)
# if you are running PyMailIO within the life time of a long running process, such as
# a web framework of rest API, then set `run_forever=True` as this will yield much
# better performances.

Create your email subject & body

r = p.send_email(
    subject="The subject...",
    body="The email body...",
)

The response from calling p.send_email:

"""

{
    "metadata": { # metadata... },
        "email": {
            "subject": subject,
            "body": body,
            "email_init": # time that PyMailIO sent your email,
    }
}
"""

To get the results of the email from the store, pass the metadata to get_email_response. For example:

# r is the return value from calling p.send_email (see above)
r = p.send_email(
    subject="The subject...",
    body="The email body...",
)

email_meta = p.get_email_response(r)

There are 2 datetime values that reference when PyMailIO executed the send_email method & also when the email was actually sent from the background queue: The datetime_exec method will give you the datetime value that PyMailIO executed the send_email method. For example:

r = p.send_email(
    subject="The subject...",
    body="The email body...",
)

self.datetime_exec()

There are 2 datetime values that reference when PyMailIO executed the send_email method & also when the email was actually sent from the background queue: The exec_time method will give you the datetime value that PyMailIO's queue executed the send_email method. For example:

r = p.send_email(
    subject="The subject...",
    body="The email body...",
)

# Some time in the future...
r = get_email_response(r)
time_email_sent = self.exec_time(r)

To update the task queue & store settings, you can pass in extra values as kwargs to the Task class. For example:

p = Task(
   password="wizard",
   receiver_email="joe@blogs.com",  # Or a list of emails receiver_email=["joe@blogs.com", ...],
   sender_email="your_email@gmail.com",
   email_host="smtp.gmail.com",

   # extra settings:
    store_port=6379,
    store_host="localhost",
    db=0,
    workers=1,
)

Built With

  • PyTaskIO - Asynchronous Tasks Library using asyncio

Authors

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Acknowledgments

This library is based on & influenced by flask-mail.

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

pymail-io-0.0.4.tar.gz (6.4 kB view hashes)

Uploaded Source

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