Configuration¶
To configure a mailer for your application, you need to choose a backend and then specify any necessary configuration values for it. The following backends are provided out of the box:
smtp
(recommended)sendmail
mock
(for testing only)
Other backends may be provided by other components.
Once you’ve selected a backend, see its specific documentation to find out what configuration values you need to provide, if any. Configuration values are expressed as constructor arguments for the backend class:
components:
mailer:
backend: smtp
host: primary-smtp.company.com
ssl: true
username: foo
password: bar
This configuration uses primary-smtp.company.com
as the server hostname and uses implicit TLS
to encrypt the connection. It authenticates with the server using the username foo
and the
password bar
.
The above configuration can be done directly in Python code as follows:
class ApplicationComponent(ContainerComponent):
async def start(ctx: Context):
self.add_component(
'mailer', backend='smtp', host='primary-smtp.company.com', ssl=True,
username='foo', password='bar')
await super().start()
Multiple mailers¶
If you need multiple mailers, you need to specify them via the mailers
argument, which is a
dictionary of resource names to their backend configuration options:
components:
mailer:
mailers:
smtp_a:
backend: smtp
context_attr: mailer1
host: primary-smtp.company.com
ssl: true
username: foo
password: bar
smtp_b:
backend: smtp
context_attr: mailer2
host: isp-smtp.provider.com
sendmail:
backend: sendmail
context_attr: mailer3
This configures three mailer resources, named smtp_a
, smtp_b
and sendmail
.
Their corresponding context attributes are mailer1
, mailer2
and mailer3
.
If you omit the context_attr
option for a mailer, its resource name will be used.