Skip to main content

easily send out emails via SMTP

Project description

ezmail

easily send out emails via python or the cli using python's SMTP module.


Getting started

download the package using pip: pip install ezmail

.env file

This module uses environment files to handle sensitive info. Make sure the following values are defined in it:

USERNAME=sender@exmaple.com
PASSWORD=<password>
SMTP=<provider's SMTP server>
PORT=<provider's port>

See examples below for popular providers.

send from python

from ezmail import send_mail

# by default, an env file named `.env` is searched.
send_mail(
  subject="Email sent with Python",
  recipients=["r1@example.com", "John Doe <john@example.com>"],
  message="Here go the contents of the message.",
)

send from the cli

python -m ezmail -s "Email sent from bash" -r "r1@example.com" "r2@example.com" -m "This is my message."


More advanced uses

This module allows adding attachments to the email, as well as reading in the message and / or recipients from a file instead of defining them directly.

python

Python automatically detects the type of data that is passed into the different fields.

For example, to read the recipients from a file, simply pass in a Path or file object instead of a list of strings.

A file that defines the recipients must have one recipient per line:

r1@example.com
John Doe <john@example.com>

The message can also be taken from a Path or file object. If the message contents are html, remember to set the html flag to True.

To add attachments, pass in a list of Paths or (read-binary) file objects. The type is automatically detected.

If an env file with a name different from .env is used, pass it into envfile as a Path object or a string

For example:

from pathlib import Path
from ezmail import send_mail

recipients_file = Path("path/to/recipients.txt")
messages_file = open("path/to/message.html", "r")

attachments = [
  Path("path/to/attachment1.csv"),
  open("path/to/attachment2.jpg", "rb"),
]

envfile = Path("my/.envfile")

send_mail(
  subject="Email sent with Python",
  recipients=recipients_file,
  message=messages_file,
  attachments=attachments,
  envfile=envfile,
  html=True,
)

cli

python -m ezmail --help to see how to call from the command line

Possible flags:

  • -s or --subject: the subject of the email (single argument)
  • message:
    • -m or --message: the contents of the email OR
    • -f or --file: the file containing the contents of the email
  • recipients:
    • -r or --recipients: the recipients of the email (one or more arguments) OR
    • -rf or --recipientsfile: the file containing the addresses of the recipients
  • -a or --attachments: a list of files to attach to the email (one or more arguments)
  • -e or --env: the env file where the credentials are defined (default .env)
  • -H or --html: (flag) if present, the contents of the message will be sent as html
  • -v or --verbose: set SMTP server debug level to 1, to debug possible connection issues

Popular SMTP servers

Here is a brief description of popular SMTP servers.

If having trouble setting up the SMTP server, pass in verbose=True into the python method, or the flag -v on the cli version.

gmail

Gmail constantly changes the requirements to be able to send out emails through SMTP. It is recommended that you follow a guide.

Then, fill in the missing values from the following .env file

USERNAME=
PASSWORD=
SMTP="smtp.gmail.com"
PORT=465

Zoho

Zoho makes it very simple to send emails through SMTP. Fill in the missing values from the following .env file and that's it!

USERNAME=
PASSWORD=
SMTP="smtp.zoho.com"
PORT=465

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

ezmail-1.0.3.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

ezmail-1.0.3-py3-none-any.whl (17.4 kB view details)

Uploaded Python 3

File details

Details for the file ezmail-1.0.3.tar.gz.

File metadata

  • Download URL: ezmail-1.0.3.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.5

File hashes

Hashes for ezmail-1.0.3.tar.gz
Algorithm Hash digest
SHA256 05a3fb39f98dbe301ecec6a29292f30794b99d58fe5190199a2693141cc85f8a
MD5 efb332dbdf0f39264240177bbae91f13
BLAKE2b-256 e84d56b28223d7f86d66f0b40852269b602355ee64a234d079f05929a20e4014

See more details on using hashes here.

File details

Details for the file ezmail-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: ezmail-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 17.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.5

File hashes

Hashes for ezmail-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c131a4c700bb46dc8a01d657d2fc17738eef6bd41d214402428324df017cf2b3
MD5 d67937bc9dc4c5a36de4e271618151e5
BLAKE2b-256 4e1b94d5277416b09130392c634ee9f6a7fdf6d223b239bc0e88faa025f42fc9

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