Mail Messaging

Introduction to the Mail Interface

Cement defines a Mail Interface, as well as the default DummyMailHandler that implements the interface as a placeholder but does not actually send any mail.

Cement Extensions that Provide Mail Handlers:

API References:

Configuration

Application Meta Options

The following options under App.Meta modify configuration handling:

Option

Description

mail_handler

The handler that implements the mail interface.

Working with Mail Messages

from cement import App

with App('myapp') as app:
    app.run()

    # send a message using the defined mail handler
    app.mail.send("Test mail message",
                  subject='My Subject',
                  to=['[email protected]'],
                  from_addr='noreply@localhost',
                  )

The default dummy mail handler simply prints the message to console, and does not send anything. You can override the mail handler via App.Meta.mail_handler, for example using the SMTP Extension.

Creating a Mail Handler

All interfaces in Cement can be overridden with your own implementation. This can be done either by sub-classing MailHandler itself, or by sub-classing an existing extension's handlers in order to alter their functionality.

myapp.py
from cement import App
from cement.core.mail import MailHandler

class MyMailHandler(MailHandler):
    class Meta:
        label = 'my_mail_handler'

    # do something to implement the interface

class MyApp(App):
    class Meta:
        label = 'myapp'
        mail_handler = 'my_mail_handler'
        handlers = [
            MyMailHandler,
        ]

Last updated