Common interface for multiple e-mail methods
Project description
GitHub | PyPI | Documentation | Issues
outgoing provides a common interface to multiple different e-mail sending methods (SMTP, sendmail, mbox, etc.). Just construct a sender from a configuration file or object, pass it an EmailMessage instance, and let the magical internet daemons take care of the rest.
outgoing itself provides support for only basic sending methods; additional methods are provided by extension packages.
See the documentation for more information.
Installation
outgoing requires Python 3.6 or higher. Just use pip for Python 3 (You have pip, right?) to install outgoing and its dependencies:
python3 -m pip install outgoing
Examples
A sample configuration file:
[outgoing]
method = "smtp"
host = "mx.example.com"
ssl = "starttls"
username = "myname"
password = { "file" = "~/secrets/smtp-password" }
Sending an e-mail based on a configuration file:
from email.message import EmailMessage
import outgoing
# Construct an EmailMessage object the standard Python way:
msg = EmailMessage()
msg["Subject"] = "Meet me"
msg["To"] = "my.beloved@love.love"
msg["From"] = "me@here.qq"
msg.set_content(
"Oh my beloved!\n"
"\n"
"Wilt thou dine with me on the morrow?\n"
"\n"
"We're having hot pockets.\n"
"\n"
"Love, Me\n"
)
# Construct a sender object based on the default config file (assuming it's
# populated)
with outgoing.from_config_file() as sender:
# Now send that letter!
sender.send(msg)
As an alternative to using a configuration file, you can specify an explicit configuration by passing the configuration structure to the outgoing.from_dict() method, like so:
from email.message import EmailMessage
import outgoing
msg1 = EmailMessage()
msg1["Subject"] = "No."
msg1["To"] = "me@here.qq"
msg1["From"] = "my.beloved@love.love"
msg1.set_content(
"Hot pockets? Thou disgusteth me.\n"
"\n"
"Pineapple pizza or RIOT.\n"
)
msg2 = EmailMessage()
msg2["Subject"] = "I'd like to place an order."
msg2["To"] = "pete@za.aa"
msg2["From"] = "my.beloved@love.love"
msg2.set_content(
"I need the usual. Twelve Hawaiian Abominations to go, please.\n"
)
SENDING_CONFIG = {
"method": "smtp",
"host": "smtp.love.love",
"username": "my.beloved",
"password": {"env": "SMTP_PASSWORD"},
"ssl": "starttls",
}
with outgoing.from_dict(SENDING_CONFIG) as sender:
sender.send(msg1)
sender.send(msg2)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.