LogoLogo
Official SiteAPI Reference
stable/3.0
stable/3.0
  • Cement Developer Guide
  • Release Information
    • What's New!
    • Upgrading
    • ChangeLog
    • Deprecations
  • Getting Started
    • Installation
    • Developer Tools
    • Framework Overview
    • Beginner Tutorial
      • Part 1: Creating Your First Project
      • Part 2: Adding Features
      • Part 3: Extending a Project
      • Part 4: Making Everything Legit
  • Core Foundation
    • Interfaces and Handlers
    • Hooks
    • Configuration Settings
    • Arguments
    • Logging
    • Controllers
    • Output Rendering
    • Caching
    • Mail Messaging
    • Framework Extensions
    • Application Plugins
    • Templating
  • Utilities
    • Filesystem
    • Shell
    • Miscellaneous
  • Extensions
    • Alarm
    • Argparse
    • Colorlog
    • ConfigParser
    • Daemon
    • Dummy
    • Generate
    • Jinja2
    • Json
    • Logging
    • Memcached
    • Mustache
    • Plugin
    • Print
    • Redis
    • Scrub
    • SMTP
    • Tabulate
    • Yaml
    • Watchdog
  • Additional Topics
    • Extending The App Object
    • Unit Testing
    • Cleanup
    • Signal Handling
    • Pipenv
    • Autocomplete
    • Profiling with cProfile
    • Debugging with VSCode
  • Environment Variables
  • Terminology
  • Contributing
  • Privacy Policy
Powered by GitBook
On this page
  • Introduction
  • Requirements
  • Configuration
  • Application Configuration Settings
  • Usage
  1. Extensions

SMTP

PreviousScrubNextTabulate

Last updated 1 year ago

Introduction

The SMTP Extension includes the , and provides the ability for applications to send email via standard SMTP.

Documentation References:

API References:

Requirements

  • No external depencies

Configuration

Application Configuration Settings

This extension supports the following configuration settings under a [mail.smtp] configuration section:

Setting

Description

to

Default recipient address (list, or comma separated depending on the config handler in use).

from_addr

Default sender address

cc

Default carbon-copy addresses (list, or comma separated depending on the config handler in use)

bcc

Default blind-carbon-copy addresses (list, or comma separated depending on the config handler in use)

subject

Default subject line

subject_prefix

Additional string to prepend to the subject line of all messages

host

The SMTP host server address. Default: localhost

port

The SMTP host server port. Default: 25

timeout

The timeout in seconds before terminating a connection. Default: 30

ssl

Whether to initiate SSL or not. Default: False

tls

Whether to use TLS or not (requires SSL). Default: False

auth

Whether or not to initiate SMTP authentication. Default: False

username

SMTP authentication username. Default: None

password

SMTP authentication password. Default: None

Usage

myapp.py
from cement import App

class MyApp(App):
    class Meta:
        label = 'myapp'
        mail_handler = 'smtp'

with MyApp() as app:
    app.run()
    
    # send a message
    app.mail.send('This is my fake message',
        subject='This is my subject',
        to=['john@example.com', 'rita@example.com'],
        from_addr='me@example.com',
    )
    
    # send text/html message
    app.mail.send(("message", "<body>message</body>"),
        subject='This is my subject',
        to=['john@example.com'],
        from_addr='me@example.com',
    )
    
    # send file attachments
    app.mail.send("message", 
        subject='This is my subject',
        to=['john@example.com'],
        from_addr='me@example.com',
        files=['/path/to/file.ext']
    )
~/.myapp.conf
[myapp]

# set the mail handler to use
mail_handler = smtp


[mail.smtp]

# default to addresses (comma separated list)
to = me@example.com

# default from address
from = someone_else@example.com

# default cc addresses (comma separated list)
cc = jane@example.com, rita@example.com

# default bcc addresses (comma separated list)
bcc = blackhole@example.com, someone_else@example.com

# default subject
subject = This is The Default Subject

# additional prefix to prepend to the subject
subject_prefix = MY PREFIX >

# smtp host server
host = localhost

# smtp host port
port = 465

# timeout in seconds
timeout = 30

# whether or not to establish an ssl connection
ssl = true

# whether or not to use start tls
tls = true

# whether or not to initiate smtp auth
auth = true

# smtp auth username
username = john.doe

# smtp auth password
password = oober_secure_password
SMTPMailHandler
Mail Messaging
Cement SMTP Extension
Python SMTP Library