Keg-Mail is a basic wrapper around Flask-Mail which gives some added support for templates.
It is not finished by any means and in some ways provides little additional benefit over Flask-Mail.
$ pip install keg-mail
Initialize Keg-Mail in your application
import flask import keg_mail from keg.signals import app_ready from keg import Keg bp = flask.blueprint('main', __name__) mail = keg_mail.KegMail() class App(Keg): use_blueprints = [bp]
Initialize the extension with the application
@app_ready.connect def init_extensions(app): """Init custom extensions used by this application""" mail.init_app(app)
Define email content
import keg_mail hello_world_content = keg_mail.EmailContent( text='Hello {name}!' html='<h1>Hello {name}!</h1>' )
Send the email
from app import mail import app.emails as emails import keg_mail bp.route('/') def index(): mail.send_email( '[email protected]', keg_mail.Email( subject="Hello {name}!", content=emails.hello_world_content, ).format(name='You") )
Test the email
from app import mail def test_send_mail(): with mail.record_messages() as outbox: resp = app.test_client.get('/') assert len(outbox) == 1 assert outbox[0].subject == "Hello You!" assert outbox[0].body == "Hello You!"
Mailgun supports various options such as tagging, user-defined variables, etc.
These can be added via a mailgun_opts
dictionary that can be passed to the
app's mail engine's send
method directly:
flask.current_app.mail.send( msg, mailgun_opts={ 'v:user_name': 'John Doe', 'v:user_id': 100, }, )