Skip to content

pycontw/mail_handler

Repository files navigation

Mail Handler

Generate emails through the template and send mails

Prerequisite

Usage

This CLI tool is designed as two steps to avoid accidental sending.

Step 1: Generate mails through the template

python render_mail.py [OPTIONS] TEMPLATE_PATH RECEIVER_DATA

Options:
  --mails_path PATH  [default: mails_to_sent]
  • TEMPLATE_PATH: The path to the jinja2 template.
  • RECEIVER_DATA: The path to receivers' data.
    • The following json sample is the least required content. All other data can be added to fit the need of the template.
    • "common_data": Common data used in each mail
    • "unique_data": Unique content for each mail
{
    "common_data": {},
    "unique_data": [
        {"receiver_email": "somerec@somedomain"}
    ]
}

Please note the comma is able to be used as a receiver separator to send multiple people. For example, the following 3 formats are all working:

A space following a comma

{
    "common_data": {},
    "unique_data": [
        {"receiver_email": "somerec01@somedomain, somerec02@somedomain"}
    ]
}

No space following a comma

{
    "common_data": {},
    "unique_data": [
        {"receiver_email": "somerec01@somedomain,somerec02@somedomain"}
    ]
}

Or mix both of the above two types

{
    "common_data": {},
    "unique_data": [
        {"receiver_email": "somerec01@somedomain, somerec02@somedomain,somerec03@somedomain"}
    ]
}
  • --mails_path PATH: The output path of the mails. The mail will be named as the receivers email address.

Step 2: Send the generated mails

python send_mail.py [OPTIONS] CONFIG_PATH

Options:
  --mails_path PATH  [default: mails_to_sent]
  --attachment_file PATH
  • CONFIG_PATH: The path to mail config.
{
    "Subject": "some subject",
    "From": "somebody@somedomain",
    "CC": "somebody1@somedomain, somebody2@somedomain"
}

Please note the comma is used as a receiver separator to send multiple people.

  • --mails_path PATH: The path of the mails to sent.

By issuing the send_mail.py command, you will be prompted to input the corresponding password of your smtp server.

You are about to send the mails under "mails_to_sent". Do you want to continue? [y/N]: y
Please enter your mail account: <sender email address in mail config>
Please enter you mail password:
INFO:root:Email sent to <receiver address in RECEIVER_DATA>!

Currently we only support the smtp server of gmail, so you may want to use the one-time app password for security concern. To use gmail one-time app password, please go to Manage your Goolge Account > Security > Signning to Google > App passwords and then Select app > Other to generate your one-time app password. The generated password could be removed anytime if you are sure that you won't use it anymore.

Contributing

See Contributing

Authors

Lee-W

About

Mail toolkit for PyCon Taiwan

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 11