Emails
send_mail
send_mail
(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None,connection=None, html_message=None)
Usage
from django.core.mail import send_mail send_mail('Subject here', 'Here is the message.', '[email protected]', ['[email protected]'], fail_silently=False)
from_email
The sender’s address. Both
[email protected]
andkimi.huang <[email protected]>
forms are legal. If omitted, theDEFAULT_FROM_EMAIL
setting is used.# Refer: https://github.com/django/django/blob/master/django/core/mail/message.py#L290 self.from_email = from_email or settings.DEFAULT_FROM_EMAIL
Must be same as
EMAIL_HOST_USER
, if not:SMTPSenderRefused: (501, 'mail from address must be same as authorization user', u'[email protected]')
- EMAIL_HOST_USER is only used for authentication on the mail server.
recipient_list
Must be a list or tuple, if not:
TypeError: "to" argument must be a list or tuple
- html_message
- If
html_message
is provided, the resulting email will be a multipart/alternative email withmessage
as the text/plain content type andhtml_message
as the text/html content type.
- If
- The return value will be the number of successfully delivered messages (which can be
0
or1
since it can only send one message).
send_mass_mail
send_mass_mail
(datatuple, fail_silently=False, auth_user=None, auth_password=None, connection=None)
Usage
from django.core.mail import send_mass_mail message1 = ('Subject here', 'Here is the message', '[email protected]', ['[email protected]', '[email protected]']) message2 = ('Another Subject', 'Here is another message', '[email protected]', ['[email protected]']) send_mass_mail((message1, message2), fail_silently=False)
datatuple
is a tuple in which each element is in this format:message1 = (subject, message, from_email, recipient_list) message2 = (subject, message, from_email, recipient_list) datatuple = (message1, message2)
send_mass_mail()
vs.send_mail()
The main difference between
send_mass_mail()
andsend_mail()
is thatsend_mail()
opens a connection to the mail server each time it’s executed, whilesend_mass_mail()
uses a single connection for all of its messages. This makessend_mass_mail()
slightly more efficient.
- The return value will be the number of successfully delivered messages.
mail_admins
mail_admins
(subject, message, fail_silently=False, connection=None, html_message=None)
mail_managers
mail_managers
(subject, message, fail_silently=False, connection=None, html_message=None)
Attach File
Multi Alternatives
- send_mail(…, message, ..., html_message=None)
PS: The message
and html_message
will not display at the same time. Only recipients can not handle an alternative content type. The message
will display.
Global Settings
# Email address that error messages come from.
SERVER_EMAIL = '[email protected]'
# The email backend to use. For possible shortcuts see django.core.mail.
# The default is to use the SMTP backend.
# Third-party backends can be specified by providing a Python path
# to a module that defines an EmailBackend class.
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# Host for sending email.
EMAIL_HOST = 'smtp.exmail.qq.com'
# Port for sending email.
EMAIL_PORT = 25
# Optional SMTP authentication information for EMAIL_HOST.
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = '<^_^>pwd<^_^>'
EMAIL_USE_TLS = False
EMAIL_USE_SSL = False
EMAIL_SSL_CERTFILE = None
EMAIL_SSL_KEYFILE = None
EMAIL_TIMEOUT = None
# Default email address to use for various automated correspondence from
# the site managers.
DEFAULT_FROM_EMAIL = 'kimi.huang <[email protected]>'
# People who get code error notifications.
# In the format [('Full Name', '[email protected]'), ('Full Name', '[email protected]')]
ADMINS = [('Kimi.Huang', '[email protected]'), ('QIMIN', '[email protected]')]
# Not-necessarily-technical managers of the site. They get broken link
# notifications and other various emails.
MANAGERS = ADMINS
# Subject-line prefix for email messages send with django.core.mail.mail_admins
# or ...mail_managers. Make sure to include the trailing space.
EMAIL_SUBJECT_PREFIX = u'[Django] '
Email Reports Server Error
When DEBUG is False,
Django will email the users listed in the ADMINS setting whenever your code raises an unhandled exception and results in an internal server error (HTTP status code 500).
This gives the administrators immediate notification of any errors.
The ADMINS will get a description of the error, a complete Python traceback, and details about the HTTP request that caused the error.
References
[1] Docs@DjangoProject, Sending email
[2] Docs@DjangoProject, Core Settings Topical Index — email
[3] Django@Github, Django Global Settings