Skip to content
Snippets Groups Projects
Commit 367e5efc authored by Samuel GAIST's avatar Samuel GAIST
Browse files

[utils] Add email sending helper

Most email sending code follows the same logic, these helpers
allow to avoid all the code duplication.
parent 256ab57e
No related branches found
No related tags found
1 merge request!260Fix mail handling
#!/usr/bin/env python
# vim: set fileencoding=utf-8 :
###############################################################################
# #
# Copyright (c) 2018 Idiap Research Institute, http://www.idiap.ch/ #
# Contact: beat.support@idiap.ch #
# #
# This file is part of the beat.web module of the BEAT platform. #
# #
# Commercial License Usage #
# Licensees holding valid commercial BEAT licenses may use this file in #
# accordance with the terms contained in a written agreement between you #
# and Idiap. For further information contact tto@idiap.ch #
# #
# Alternatively, this file may be used under the terms of the GNU Affero #
# Public License version 3 as published by the Free Software and appearing #
# in the file LICENSE.AGPL included in the packaging of this file. #
# The BEAT platform is distributed in the hope that it will be useful, but #
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY #
# or FITNESS FOR A PARTICULAR PURPOSE. #
# #
# You should have received a copy of the GNU Affero Public License along #
# with the BEAT platform. If not, see http://www.gnu.org/licenses/. #
# #
###############################################################################
"""
Email related helper
"""
from django.conf import settings
from django.core.mail import send_mail
from django.template import loader
def send_email(
subject_template,
message_template,
context,
recipients,
sender=settings.DEFAULT_FROM_EMAIL,
):
"""
Send email based on the given templates and context information to the list
of recipients using the sender address
Parameters:
subject_template (str): Path to subject template
message_template (str): Path the message template
context (dict): context data for the renderer
recipients (list): email address list of the email receivers
sender (str): email address of the sender
"""
assert type(recipients) is list
subject, message = build_elements(subject_template, message_template, context)
send_mail(subject, message, sender, recipients, sender)
def build_elements(subject_template, message_template, context):
"""
Build email elements to send
Parameters:
subject_template (str): Path to subject template
message_template (str): Path the message template
context (dict): context data for the renderer
"""
template = loader.get_template(subject_template)
subject = template.render(context)
# Note: e-mail subject *must not* contain newlines
subject = settings.EMAIL_SUBJECT_PREFIX + "".join(subject.splitlines())
template = loader.get_template(message_template)
message = template.render(context)
return (subject, message)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment