Django | Sending email | Django documentation
SMTP backend¶
This is the default backend. Email will be sent through a SMTP server.
The server address and authentication credentials are set in the
EMAIL_HOST, EMAIL_PORT, EMAIL_HOST_USER,
EMAIL_HOST_PASSWORD and EMAIL_USE_TLS settings in your
settings file.The SMTP backend is the default configuration inherited by Django. If you
want to specify it explicitly, put the following in your settings:EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'SMTPConnection objects
Prior to version 1.2, Django provided a
SMTPConnection class. This class provided a way
to directly control the use of SMTP to send email. This class has been
deprecated in favor of the generic email backend API.For backwards compatibility SMTPConnection is
still available in django.core.mail as an alias for the SMTP backend.
New code should use get_connection() instead.Console backend¶
Instead of sending out real emails the console backend just writes the
emails that would be send to the standard output. By default, the console
backend writes to stdout. You can use a different stream-like object by
providing the stream keyword argument when constructing the connection.To specify this backend, put the following in your settings:
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'This backend is not intended for use in production -- it is provided as a
convenience that can be used during development.File backend¶
The file backend writes emails to a file. A new file is created for each new
session that is opened on this backend. The directory to which the files are
written is either taken from the EMAIL_FILE_PATH setting or from
the file_path keyword when creating a connection with
get_connection().To specify this backend, put the following in your settings:
EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend' EMAIL_FILE_PATH = '/tmp/app-messages' # change this to a proper locationThis backend is not intended for use in production -- it is provided as a
convenience that can be used during development.In-memory backend¶
The 'locmem' backend stores messages in a special attribute of the
django.core.mail module. The outbox attribute is created when the
first message is sent. It's a list with an
EmailMessage instance for each message that would
be send.To specify this backend, put the following in your settings:
EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend'This backend is not intended for use in production -- it is provided as a
convenience that can be used during development and testing.Dummy backend¶
As the name suggests the dummy backend does nothing with your messages. To
specify this backend, put the following in your settings:EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend'This backend is not intended for use in production -- it is provided as a
convenience that can be used during development.Defining a custom email backend¶