Sen descrición

Mikael Koli 693e185ff1 pkg: add codecov %!s(int64=4) %!d(string=hai) anos
.github 3cddff4d9c Create main.yml %!s(int64=4) %!d(string=hai) anos
docs be50c73ae3 docs: added docs %!s(int64=4) %!d(string=hai) anos
redmail 66c12d46e6 test: fix dataframe to csv equality check %!s(int64=4) %!d(string=hai) anos
requirements b6d3a8603f CI: updated requirements %!s(int64=4) %!d(string=hai) anos
.coveragerc 693e185ff1 pkg: add codecov %!s(int64=4) %!d(string=hai) anos
.gitattributes 4d0402d493 pkg: add packaging and setup files %!s(int64=4) %!d(string=hai) anos
.gitignore 4d0402d493 pkg: add packaging and setup files %!s(int64=4) %!d(string=hai) anos
MANIFEST.in fc252716da fix: added templates to MANIFEST.in %!s(int64=4) %!d(string=hai) anos
README.md be50c73ae3 docs: added docs %!s(int64=4) %!d(string=hai) anos
requirements.txt 8ffbbd8ece pkg: added Pandas to requirements %!s(int64=4) %!d(string=hai) anos
setup.cfg 4d0402d493 pkg: add packaging and setup files %!s(int64=4) %!d(string=hai) anos
setup.py 8ffbbd8ece pkg: added Pandas to requirements %!s(int64=4) %!d(string=hai) anos
tox.ini b1a23f2b4e add: requirements.txt for CI and docs %!s(int64=4) %!d(string=hai) anos
versioneer.py 2966ecd133 pkg: Some weird issues in versioneer %!s(int64=4) %!d(string=hai) anos

README.md

Red Mail

Next generation email sender


What is it?

Red Mail is an advanced email sender library. It makes sending emails trivial and has a lot of advanced features such as:

  • Attachments
  • Templating (via Jinja)
  • Prettified tables
  • Embedded images

Why Red Mail?

Sending emails should not be this complicated:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

msg = MIMEMultipart('alternative')
msg['Subject'] = f'The contents of {textfile}'
msg['From'] = 'first.last@gmail.com'
msg['To'] = 'first.last@example.com'

part1 = MIMEText("Hello!", 'plain')
part2 = MIMEText("<h1>Hello!</h1>", 'html')

msg.attach(part1)
msg.attach(part2)

# Send the message via our own SMTP server.
s = smtplib.SMTP('localhost', port=0)
s.send_message(msg)
s.quit()

With Red Mail, it's simple as this:

from redmail import EmailSender

email = EmailSender(host="localhost", port=0)

email.send(
    subject="The contents of myfile",
    receivers=['first.last@example.com'],
    text="Hello!",
    html="<h1>Hello!</h1>"
)

You can also do more advanced things easily with it:

from redmail import EmailSender

email = EmailSender(host="localhost", port=0)

email.send(
    subject="The contents of myfile",
    sender="me@example.com",
    receivers=['first.last@example.com'],
    text="Hello!",
    html="""<h1>Hello {{ friend }}!</h1>
        <p>Have you seen this thing</p>
        {{ awesome_image }}
        <p>Or this:</p>
        {{ pretty_table }}
        <p>Kind regards, {{ sender.full_name }}</p>
    """,
    body_params={'friend': 'Jack'},
    body_images={'awesome_image': 'path/to/image.png'},
    body_tables={'pretty_table': pd.DataFrame(...)},
    attachments={
        'some_data.csv': pd.DataFrame(...),
        'file_content.html': '<h1>This is an attachment</h1>',
        'a_file.txt': pathlib.Path('path/to/file.txt')
    }
)

Author

  • Mikael Koli - Miksus - koli.mikael@gmail.com