This project allows sending STMP email over TLS using SSL.
Project description
SSL Email
Table of Contents
Project Description
This project allows sending STMP email over TLS using SSL. Use the Emailer class to create an instance for an outgoing email account, and call the send
method to send an email. You can also use the EmailHandler class to add a custom email handler to your app's logger.
Installation
python -m pip install secure-email
Setup
Keyring
The keyring library stores credentials in your machine's Windows Credential Locker. If you wish to make use of the Emailer class' use_keyring argument, make sure you have the keyring library installed:
pip install keyring
To use keyring to fetch the password in the Emailer class, use the email address associated with the credentials as the name:
keyring.set_password(
"username@domain.com",
"username@domain.com",
"supersecretpassword"
)
Usage
from secure_email import Emailer
Files in the demo folder demonstrate how to use the two classes in this project--Emailer and EmailHandler. send_email.py
demonstrates how to send an email from a python script, and the flask_app
demonstrates how to add the EmailHandler to you app's logger. The Emailer and EmailHandler classes are both located in sendmail.py
in the src folder.
Emailer
Class for sending emails. Instantiating a class merely stores the info to create an STMP connection, while calling the send method creates the STMP connection, sends an email, and then closes the connection.
-
Arguments:
- secure_host (str): default SSL-enabled mail host
- port (int): port number for mail host
- email_address (str): "from" email address
- password: (str | None): email password (default: None)
- user: (str | None): username for server, if different than email address
- unsecure_host: (str | None): backup non-SSL mail host
- use_keyring (bool): whether to fetch password from keyring (default: False)
- include_ssl_status (bool): whether to add line to body of sent emails indicating whether email was sent over SSL (default: False)
-
Methods:
- send
- Sends STMP email
- Arguments:
- to (str|list[str]): email recipient(s)
- subject (str): email subject line
- body (str): body of email as text or HTML string
- cc_list (list[str]): recipients to CC (default: [])
- bcc_list (list[str]): recipients to BCC (default: [])
- html (bool): whether to send body as HTML (default: False)
- secure (bool): whether to send over SSL (default: True)
- Returns:
- response (str): either "success" or error message
- send
-
Example:
# Supply password directly emailer = Emailer( "my.emailserver.com", # host 0, # port "email@example.com", # email_address password="supersecretpassword" ) # Use password stored in keyring emailer = Emailer( "my.emailserver.com", # host 0, # port "email@example.com", # email_address use_keyring=True ) response = emailer.send( "recipient@domain.org", # to "Open Immediately!!!", # subject "You may have won $1,000,000. Click the link below to find out", # body ) successful = response == "success"
EmailHandler
Extends logging.handlers.SMTPHandler to use the Emailer class to send emails (see the logging library documentation to learn more about the SMTPHandler). EmailHandler makes the following modifications to SMTPHandler:
-
Modified arguments:
- subject: (str | None): required in SMTPHandler, but optional in EmailHandler in case subject formatter is used instead; note that failing to provide a subject string or add a subject formatter will result in emails being sent with no subject
-
Additional arguments:
- send_html (bool): whether to send HTML email instead of plain text (default: False)
- backup_host (str | None): non-SSL host to send from if SSL host fails
- include_ssl_status (bool): whether to add line to body of sent emails indicating whether email was sent over SSL default: False)
-
Additional methods:
- setSubjectFormatter: sets formatter to use for record-based subject line
- Params:
- fmt (logging.Formatter)
- Params:
- setSubjectFormatter: sets formatter to use for record-based subject line
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
Built Distribution
File details
Details for the file secure_email-1.0.3.tar.gz
.
File metadata
- Download URL: secure_email-1.0.3.tar.gz
- Upload date:
- Size: 215.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.31.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 782ba6ddf654d28e07d801da1ba700cdedb1166d2d37e792df0eacb604dbc861 |
|
MD5 | 613e262cd5f8c36e512332ac416a5861 |
|
BLAKE2b-256 | 70995cf64920ee106e392a6de596f110679d1cf6dfb27e0720a5ea94f89ea53b |
File details
Details for the file secure_email-1.0.3-py2.py3-none-any.whl
.
File metadata
- Download URL: secure_email-1.0.3-py2.py3-none-any.whl
- Upload date:
- Size: 6.5 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.31.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 676756c1d7b7d42edc9794fd8ac30ae7e3cd3a0db5d0d2e7c31ff9f5e5a681e1 |
|
MD5 | 9e74348b1676e64367fa6cabf22cbc27 |
|
BLAKE2b-256 | d476d529c1664c6aa7d5952e0fa2695d092834967d1834dc7acca05da687151d |