From 3154bf95573a9f3ffeef1104ecb47f768046b7b6 Mon Sep 17 00:00:00 2001
From: "o.bugaenko"
Date: Thu, 5 Oct 2023 17:09:59 +0300
Subject: [PATCH] feat: add brand_color variable for the email templates
---
common/djangoapps/student/tests/test_email.py | 19 +--
.../edx_ace/accountactivation/email/body.html | 2 +-
.../edx_ace/emailchange/email/body.html | 2 +
.../emailchangeconfirmation/email/body.html | 2 +
lms/djangoapps/instructor/tests/test_api.py | 139 +++++++++---------
.../edx_ace/addbetatester/email/body.html | 2 +
.../edx_ace/allowedenroll/email/body.html | 2 +
.../edx_ace/allowedunenroll/email/body.html | 2 +
.../edx_ace/enrolledunenroll/email/body.html | 2 +
.../edx_ace/enrollenrolled/email/body.html | 2 +
.../edx_ace/removebetatester/email/body.html | 2 +
.../verificationsubmitted/email/body.html | 2 +
.../ace_common/edx_ace/common/base_body.html | 8 +-
.../edx_ace/common/return_to_course_cta.html | 10 +-
.../edx_ace/upgradereminder/email/body.html | 10 +-
.../email/body.html | 2 +
16 files changed, 113 insertions(+), 95 deletions(-)
diff --git a/common/djangoapps/student/tests/test_email.py b/common/djangoapps/student/tests/test_email.py
index 7f1287fba048..6f43e3151ca2 100644
--- a/common/djangoapps/student/tests/test_email.py
+++ b/common/djangoapps/student/tests/test_email.py
@@ -406,10 +406,9 @@ def test_email_success(self):
subject='Request to change édX account e-mail',
body_fragments=[
'We received a request to change the e-mail associated with',
- 'your édX account from {old_email} to {new_email}.'.format(
- old_email=old_email,
- new_email=new_email,
- ),
+ 'your édX account from',
+ old_email,
+ new_email,
'If this is correct, please confirm your new e-mail address by visiting:',
f'http://edx.org/email_confirm/{registration_key}',
'Please do not reply to this e-mail; if you require assistance,',
@@ -467,13 +466,11 @@ def setUp(self):
# Text fragments we expect in the body of the confirmation email
self.email_fragments = [
- "This is to confirm that you changed the e-mail associated with {platform_name}"
- " from {old_email} to {new_email}. If you did not make this request, please contact us immediately."
- " Contact information is listed at:".format(
- platform_name=settings.PLATFORM_NAME,
- old_email=self.user.email,
- new_email=PendingEmailChange.objects.get(activation_key=self.key).new_email
- ),
+ "This is to confirm that you changed the e-mail associated with ",
+ str(settings.PLATFORM_NAME),
+ "If you did not make this request, please contact us immediately. Contact information is listed at:",
+ self.user.email,
+ PendingEmailChange.objects.get(activation_key=self.key).new_email,
"We keep a log of old e-mails, so if this request was unintentional, we can investigate."
]
diff --git a/common/templates/student/edx_ace/accountactivation/email/body.html b/common/templates/student/edx_ace/accountactivation/email/body.html
index 9709074cc3d4..2c78b6f4b998 100644
--- a/common/templates/student/edx_ace/accountactivation/email/body.html
+++ b/common/templates/student/edx_ace/accountactivation/email/body.html
@@ -50,7 +50,7 @@
{% blocktrans trimmed asvar assist_msg %}
If you need help, please use our web form at {start_anchor_web}{{ support_url }}{end_anchor} or email {start_anchor_email}{{ support_email }}{end_anchor}.
{% endblocktrans %}
- {% interpolate_html assist_msg start_anchor_web=''|safe start_anchor_email=''|safe end_anchor=''|safe %}
+ {% interpolate_html assist_msg start_anchor_web=''|safe start_anchor_email=''|safe end_anchor=''|safe %}
diff --git a/common/templates/student/edx_ace/emailchange/email/body.html b/common/templates/student/edx_ace/emailchange/email/body.html
index b5c2c5edf21e..d6290d2161e4 100644
--- a/common/templates/student/edx_ace/emailchange/email/body.html
+++ b/common/templates/student/edx_ace/emailchange/email/body.html
@@ -3,6 +3,7 @@
{% load i18n %}
{% load static %}
{% block content %}
+{% with old_email=''|add:old_email|add:''|safe new_email=''|add:new_email|add:''|safe %}
+{% endwith %}
{% endblock %}
diff --git a/common/templates/student/edx_ace/emailchangeconfirmation/email/body.html b/common/templates/student/edx_ace/emailchangeconfirmation/email/body.html
index 9fc9f5929c43..f62c8e71476b 100644
--- a/common/templates/student/edx_ace/emailchangeconfirmation/email/body.html
+++ b/common/templates/student/edx_ace/emailchangeconfirmation/email/body.html
@@ -3,6 +3,7 @@
{% load i18n %}
{% load static %}
{% block content %}
+{% with old_email=''|add:old_email|add:''|safe new_email=''|add:new_email|add:''|safe %}
+{% endwith %}
{% endblock %}
diff --git a/lms/djangoapps/instructor/tests/test_api.py b/lms/djangoapps/instructor/tests/test_api.py
index 468bca31f780..2e9224d2f863 100644
--- a/lms/djangoapps/instructor/tests/test_api.py
+++ b/lms/djangoapps/instructor/tests/test_api.py
@@ -1228,14 +1228,17 @@ def test_enroll_with_email(self, protocol):
assert text_body.startswith('Dear NotEnrolled Student\n\n')
for body in [text_body, html_body]:
- assert f'You have been enrolled in {self.course.display_name} at edx.org by a member of the course staff.'\
- in body
-
- assert 'This course will now appear on your edx.org dashboard.' in body
+ assert f'You have been enrolled in {self.course.display_name} at ' in body
+ assert self.site_name in body
+ assert ' by a member of the course staff.' in body
+ assert 'This course will now appear on your ' in body
assert f'{protocol}://{self.site_name}{self.course_path}' in body
assert 'To start accessing course materials, please visit' in text_body
- assert 'This email was automatically sent from edx.org to NotEnrolled Student\n\n' in text_body
+ assert (
+ f'This email was automatically sent from {self.site_name} to {self.notenrolled_student.first_name} '
+ f'{self.notenrolled_student.last_name}\n\n'
+ ) in text_body
@ddt.data('http', 'https')
def test_enroll_with_email_not_registered(self, protocol):
@@ -1264,22 +1267,21 @@ def test_enroll_with_email_not_registered(self, protocol):
assert register_url in html_body
for body in [text_body, html_body]:
- assert 'You have been invited to join {course} at edx.org by a member of the course staff.'.format(
+ assert 'You have been invited to join {course} at '.format(
course=self.course.display_name
) in body
-
- assert ('fill out the registration form making sure to use '
- 'robot-not-an-email-yet@robot.org in the Email field') in body
-
+ assert self.site_name in body
+ assert ' by a member of the course staff.' in body
+ assert 'fill out the registration form making sure to use ' in body
+ assert self.notregistered_email in body
+ assert ' in the Email field' in body
assert 'Once you have registered and activated your account,' in body
-
assert '{proto}://{site}{about_path}'.format(
proto=protocol,
site=self.site_name,
about_path=self.about_path
) in body
-
- assert 'This email was automatically sent from edx.org to robot-not-an-email-yet@robot.org' in body
+ assert 'This email was automatically sent from ' in body
@ddt.data('http', 'https')
@patch.dict(settings.FEATURES, {'ENABLE_MKTG_SITE': True})
@@ -1302,23 +1304,22 @@ def test_enroll_email_not_registered_mktgsite(self, protocol):
assert 'Please finish your registration and fill' in html_body
for body in [text_body, html_body]:
- assert 'You have been invited to join {display_name} at edx.org by a member of the course staff.'.format(
+ assert 'You have been invited to join {display_name} at '.format(
display_name=self.course.display_name
) in body
-
+ assert self.site_name in body
+ assert 'by a member of the course staff.' in body
assert '{proto}://{site}/register'.format(
proto=protocol,
site=self.site_name
) in body
-
- assert ('fill out the registration form making sure to use '
- 'robot-not-an-email-yet@robot.org in the Email field') in body
-
+ assert 'fill out the registration form making sure to use ' in body
+ assert self.notregistered_email in body
+ assert ' in the Email field' in body
assert 'You can then enroll in {display_name}.'.format(
display_name=self.course.display_name
) in body
-
- assert 'This email was automatically sent from edx.org to robot-not-an-email-yet@robot.org' in body
+ assert 'This email was automatically sent from ' in body
@ddt.data('http', 'https')
def test_enroll_with_email_not_registered_autoenroll(self, protocol):
@@ -1353,20 +1354,19 @@ def test_enroll_with_email_not_registered_autoenroll(self, protocol):
assert register_url in html_body
for body in [text_body, html_body]:
- assert 'You have been invited to join {display_name} at edx.org by a member of the course staff.'.format(
+ assert 'You have been invited to join {display_name} at '.format(
display_name=self.course.display_name
) in body
-
- assert (' and fill '
- 'out the registration form making sure to use robot-not-an-email-yet@robot.org '
- 'in the Email field') in body
-
+ assert self.site_name in body
+ assert 'by a member of the course staff.' in body
+ assert ' and fill out the registration form making sure to use ' in body
+ assert self.notregistered_email in body
+ assert 'in the Email field' in body
assert ('Once you have registered and activated your account, '
'you will see {display_name} listed on your dashboard.').format(
display_name=self.course.display_name
) in body
-
- assert 'This email was automatically sent from edx.org to robot-not-an-email-yet@robot.org' in body
+ assert 'This email was automatically sent from ' in body
def test_unenroll_without_email(self):
url = reverse('students_update_enrollment', kwargs={'course_id': str(self.course.id)})
@@ -1461,13 +1461,15 @@ def test_unenroll_with_email(self):
assert text_body.startswith('Dear Enrolled Student')
for body in [text_body, html_body]:
- assert 'You have been unenrolled from {display_name} at edx.org by a member of the course staff.'.format(
+ assert 'You have been unenrolled from {display_name} at '.format(
display_name=self.course.display_name,
) in body
-
- assert 'This course will no longer appear on your edx.org dashboard.' in body
+ assert self.site_name in body
+ assert ' by a member of the course staff.' in body
+ assert 'This course will no longer appear on your ' in body
assert 'Your other courses have not been affected.' in body
- assert 'This email was automatically sent from edx.org to Enrolled Student' in body
+ assert 'This email was automatically sent from ' in body
+ assert f'to {self.enrolled_student.first_name} {self.enrolled_student.last_name}' in body
def test_unenroll_with_email_allowed_student(self):
url = reverse('students_update_enrollment', kwargs={'course_id': str(self.course.id)})
@@ -1519,7 +1521,9 @@ def test_unenroll_with_email_allowed_student(self):
) in body
assert 'Please disregard the invitation previously sent.' in body
- assert 'This email was automatically sent from edx.org to robot-allowed@robot.org' in body
+ assert 'This email was automatically sent from ' in body
+ assert self.site_name in body
+ assert self.allowed_email in body
@ddt.data('http', 'https')
@patch('lms.djangoapps.instructor.enrollment.uses_shib')
@@ -1551,11 +1555,13 @@ def test_enroll_with_email_not_registered_with_shib(self, protocol, mock_uses_sh
assert course_url in html_body
for body in [text_body, html_body]:
- assert 'You have been invited to join {display_name} at edx.org by a member of the course staff.'.format(
+ assert 'You have been invited to join {display_name} at '.format(
display_name=self.course.display_name,
) in body
-
- assert 'This email was automatically sent from edx.org to robot-not-an-email-yet@robot.org' in body
+ assert self.site_name in body
+ assert ' by a member of the course staff.' in body
+ assert 'This email was automatically sent from ' in body
+ assert self.notregistered_email in body
@patch('lms.djangoapps.instructor.enrollment.uses_shib')
@patch.dict(settings.FEATURES, {'ENABLE_MKTG_SITE': True})
@@ -1576,11 +1582,13 @@ def test_enroll_email_not_registered_shib_mktgsite(self, mock_uses_shib):
assert text_body.startswith('Dear student,')
for body in [text_body, html_body]:
- assert 'You have been invited to join {display_name} at edx.org by a member of the course staff.'.format(
+ assert 'You have been invited to join {display_name} at '.format(
display_name=self.course.display_name,
) in body
-
- assert 'This email was automatically sent from edx.org to robot-not-an-email-yet@robot.org' in body
+ assert self.site_name in body
+ assert ' by a member of the course staff.' in body
+ assert 'This email was automatically sent from ' in body
+ assert self.notregistered_email in body
@ddt.data('http', 'https')
@patch('lms.djangoapps.instructor.enrollment.uses_shib')
@@ -1611,11 +1619,13 @@ def test_enroll_with_email_not_registered_with_shib_autoenroll(self, protocol, m
assert 'To access this course click on the button below and login:' in html_body
for body in [text_body, html_body]:
- assert 'You have been invited to join {display_name} at edx.org by a member of the course staff.'.format(
+ assert 'You have been invited to join {display_name} at '.format(
display_name=self.course.display_name,
) in body
-
- assert 'This email was automatically sent from edx.org to robot-not-an-email-yet@robot.org' in body
+ assert ' by a member of the course staff.' in body
+ assert 'This email was automatically sent from ' in body
+ assert self.site_name in body
+ assert self.notregistered_email in body
def test_enroll_already_enrolled_student(self):
"""
@@ -1998,22 +2008,19 @@ def test_add_notenrolled_with_email(self, protocol):
assert f'Visit {self.course.display_name}' in html_body
for body in [text_body, html_body]:
- assert 'You have been invited to be a beta tester for {display_name} at edx.org'.format(
+ assert 'You have been invited to be a beta tester for {display_name} at '.format(
display_name=self.course.display_name,
) in body
-
+ assert self.site_name in body
assert 'by a member of the course staff.' in body
assert 'enroll in this course and begin the beta test' in body
-
assert '{proto}://{site}{about_path}'.format(
proto=protocol,
site=self.site_name,
about_path=self.about_path,
) in body
-
- assert 'This email was automatically sent from edx.org to {student_email}'.format(
- student_email=self.notenrolled_student.email,
- ) in body
+ assert 'This email was automatically sent from ' in body
+ assert self.notenrolled_student.email in body
@ddt.data('http', 'https')
def test_add_notenrolled_with_email_autoenroll(self, protocol):
@@ -2050,22 +2057,19 @@ def test_add_notenrolled_with_email_autoenroll(self, protocol):
assert text_body.startswith(f'Dear {student_name}')
for body in [text_body, html_body]:
- assert 'You have been invited to be a beta tester for {display_name} at edx.org'.format(
+ assert 'You have been invited to be a beta tester for {display_name} at '.format(
display_name=self.course.display_name,
) in body
-
+ assert self.site_name in body
assert 'by a member of the course staff' in body
-
assert 'To start accessing course materials, please visit' in body
assert '{proto}://{site}{course_path}'.format(
proto=protocol,
site=self.site_name,
course_path=self.course_path
)
-
- assert 'This email was automatically sent from edx.org to {student_email}'.format(
- student_email=self.notenrolled_student.email,
- ) in body
+ assert 'This email was automatically sent from ' in body
+ assert self.notenrolled_student.email in body
@patch.dict(settings.FEATURES, {'ENABLE_MKTG_SITE': True})
def test_add_notenrolled_email_mktgsite(self):
@@ -2081,16 +2085,14 @@ def test_add_notenrolled_email_mktgsite(self):
assert text_body.startswith(f'Dear {student_name}')
for body in [text_body, html_body]:
- assert 'You have been invited to be a beta tester for {display_name} at edx.org'.format(
+ assert 'You have been invited to be a beta tester for {display_name} at '.format(
display_name=self.course.display_name,
) in body
-
+ assert self.site_name in body
assert 'by a member of the course staff.' in body
- assert 'Visit edx.org' in body
assert 'enroll in this course and begin the beta test' in body
- assert 'This email was automatically sent from edx.org to {student_email}'.format(
- student_email=self.notenrolled_student.email,
- ) in body
+ assert 'This email was automatically sent from ' in body
+ assert self.notenrolled_student.email in body
def test_enroll_with_email_not_registered(self):
# User doesn't exist
@@ -2184,18 +2186,15 @@ def test_remove_with_email(self):
assert text_body.startswith(f'Dear {self.beta_tester.profile.name}')
for body in [text_body, html_body]:
- assert 'You have been removed as a beta tester for {display_name} at edx.org'.format(
+ assert 'You have been removed as a beta tester for {display_name} at '.format(
display_name=self.course.display_name,
) in body
-
+ assert self.site_name in body
assert ('This course will remain on your dashboard, but you will no longer be '
'part of the beta testing group.') in body
-
assert 'Your other courses have not been affected.' in body
-
- assert 'This email was automatically sent from edx.org to {email_address}'.format(
- email_address=self.beta_tester.email,
- ) in body
+ assert 'This email was automatically sent from ' in body
+ assert self.beta_tester.email in body
class TestInstructorAPILevelsAccess(SharedModuleStoreTestCase, LoginEnrollmentTestCase):
diff --git a/lms/templates/instructor/edx_ace/addbetatester/email/body.html b/lms/templates/instructor/edx_ace/addbetatester/email/body.html
index 39389f39ac0c..2b454d8583f1 100644
--- a/lms/templates/instructor/edx_ace/addbetatester/email/body.html
+++ b/lms/templates/instructor/edx_ace/addbetatester/email/body.html
@@ -3,6 +3,7 @@
{% load i18n %}
{% load static %}
{% block content %}
+{% with site_name=''|safe|add:site_name|add:''|safe email_address=''|safe|add:email_address|add:''|safe %}
+{% endwith %}
{% endblock %}
diff --git a/lms/templates/instructor/edx_ace/allowedenroll/email/body.html b/lms/templates/instructor/edx_ace/allowedenroll/email/body.html
index 37aef5de4a1f..c70d3c16d518 100644
--- a/lms/templates/instructor/edx_ace/allowedenroll/email/body.html
+++ b/lms/templates/instructor/edx_ace/allowedenroll/email/body.html
@@ -3,6 +3,7 @@
{% load i18n %}
{% load static %}
{% block content %}
+{% with site_name=''|safe|add:site_name|add:''|safe email_address=''|safe|add:email_address|add:''|safe %}
+{% endwith %}
{% endblock %}
diff --git a/lms/templates/instructor/edx_ace/allowedunenroll/email/body.html b/lms/templates/instructor/edx_ace/allowedunenroll/email/body.html
index d3f40738e3b0..06b53856dcd5 100644
--- a/lms/templates/instructor/edx_ace/allowedunenroll/email/body.html
+++ b/lms/templates/instructor/edx_ace/allowedunenroll/email/body.html
@@ -3,6 +3,7 @@
{% load i18n %}
{% load static %}
{% block content %}
+{% with site_name=''|safe|add:site_name|add:''|safe email_address=''|safe|add:email_address|add:''|safe %}
+{% endwith %}
{% endblock %}
diff --git a/lms/templates/instructor/edx_ace/enrolledunenroll/email/body.html b/lms/templates/instructor/edx_ace/enrolledunenroll/email/body.html
index 33524c068927..686797dc2a95 100644
--- a/lms/templates/instructor/edx_ace/enrolledunenroll/email/body.html
+++ b/lms/templates/instructor/edx_ace/enrolledunenroll/email/body.html
@@ -3,6 +3,7 @@
{% load i18n %}
{% load static %}
{% block content %}
+{% with site_name=''|safe|add:site_name|add:''|safe %}
+{% endwith %}
{% endblock %}
diff --git a/lms/templates/instructor/edx_ace/enrollenrolled/email/body.html b/lms/templates/instructor/edx_ace/enrollenrolled/email/body.html
index e5a4735a62c0..8f14a6a0876a 100644
--- a/lms/templates/instructor/edx_ace/enrollenrolled/email/body.html
+++ b/lms/templates/instructor/edx_ace/enrollenrolled/email/body.html
@@ -3,6 +3,7 @@
{% load i18n %}
{% load static %}
{% block content %}
+{% with site_name=''|safe|add:site_name|add:''|safe %}
+{% endwith %}
{% endblock %}
diff --git a/lms/templates/instructor/edx_ace/removebetatester/email/body.html b/lms/templates/instructor/edx_ace/removebetatester/email/body.html
index bb5677b40f61..72b0607ecd38 100644
--- a/lms/templates/instructor/edx_ace/removebetatester/email/body.html
+++ b/lms/templates/instructor/edx_ace/removebetatester/email/body.html
@@ -3,6 +3,7 @@
{% load i18n %}
{% load static %}
{% block content %}
+{% with site_name=''|safe|add:site_name|add:''|safe email_address=''|safe|add:email_address|add:''|safe %}
+{% endwith %}
{% endblock %}
diff --git a/lms/templates/verify_student/edx_ace/verificationsubmitted/email/body.html b/lms/templates/verify_student/edx_ace/verificationsubmitted/email/body.html
index c23fbdfca5ea..9e68d5cb30e4 100644
--- a/lms/templates/verify_student/edx_ace/verificationsubmitted/email/body.html
+++ b/lms/templates/verify_student/edx_ace/verificationsubmitted/email/body.html
@@ -3,6 +3,7 @@
{% load i18n %}
{% load static %}
{% block content %}
+{% with dashboard_link=''|add:dashboard_link|add:''|safe %}
+{% endwith %}
{% endblock %}
diff --git a/openedx/core/djangoapps/ace_common/templates/ace_common/edx_ace/common/base_body.html b/openedx/core/djangoapps/ace_common/templates/ace_common/edx_ace/common/base_body.html
index c04873ffdd44..3c0c3fa6839c 100644
--- a/openedx/core/djangoapps/ace_common/templates/ace_common/edx_ace/common/base_body.html
+++ b/openedx/core/djangoapps/ace_common/templates/ace_common/edx_ace/common/base_body.html
@@ -29,6 +29,7 @@
{% google_analytics_tracking_pixel %}
+{% with brand_color="#005686" logo_max_height="65px" %}
- 
+

@@ -218,8 +219,8 @@
{% get_action_links channel omit_unsubscribe_link=omit_unsubscribe_link as action_links %}
{% for action_link_url, action_link_text in action_links %}
-
- {{ action_link_text }}
+
+ {{ action_link_text }}
{% endfor %}
@@ -253,6 +254,7 @@
+{% endwith %}
{# Debug info that is not user-visible #}
{{ message.log_id }}
diff --git a/openedx/core/djangoapps/ace_common/templates/ace_common/edx_ace/common/return_to_course_cta.html b/openedx/core/djangoapps/ace_common/templates/ace_common/edx_ace/common/return_to_course_cta.html
index 72806a7c5c60..722cb54b18de 100644
--- a/openedx/core/djangoapps/ace_common/templates/ace_common/edx_ace/common/return_to_course_cta.html
+++ b/openedx/core/djangoapps/ace_common/templates/ace_common/edx_ace/common/return_to_course_cta.html
@@ -21,11 +21,11 @@
border-radius: 4px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
- background-color: #005686;
- border-top: 12px solid #005686;
- border-bottom: 12px solid #005686;
- border-right: 50px solid #005686;
- border-left: 50px solid #005686;
+ background-color: {{ brand_color }};
+ border-top: 12px solid {{ brand_color }};
+ border-bottom: 12px solid {{ brand_color }};
+ border-right: 50px solid {{ brand_color }};
+ border-left: 50px solid {{ brand_color }};
display: inline-block;
">
{# old email clients require the use of the font tag :( #}
diff --git a/openedx/core/djangoapps/schedules/templates/schedules/edx_ace/upgradereminder/email/body.html b/openedx/core/djangoapps/schedules/templates/schedules/edx_ace/upgradereminder/email/body.html
index 03824fbea24f..cc3db8166e96 100644
--- a/openedx/core/djangoapps/schedules/templates/schedules/edx_ace/upgradereminder/email/body.html
+++ b/openedx/core/djangoapps/schedules/templates/schedules/edx_ace/upgradereminder/email/body.html
@@ -101,11 +101,11 @@ {% trans "Upgrade now" as tmsg %}{{ tmsg | force_escape }}
border-radius: 4px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
- background-color: #005686;
- border-top: 10px solid #005686;
- border-bottom: 10px solid #005686;
- border-right: 16px solid #005686;
- border-left: 16px solid #005686;
+ background-color: {{ brand_color }};
+ border-top: 10px solid {{ brand_color }};
+ border-bottom: 10px solid {{ brand_color }};
+ border-right: 16px solid {{ brand_color }};
+ border-left: 16px solid {{ brand_color }};
display: inline-block;
">
{# old email clients require the use of the font tag :( #}
diff --git a/openedx/core/djangoapps/user_api/templates/user_api/edx_ace/deletionnotificationmessage/email/body.html b/openedx/core/djangoapps/user_api/templates/user_api/edx_ace/deletionnotificationmessage/email/body.html
index 0e9ff89f9e06..3ca277e05907 100644
--- a/openedx/core/djangoapps/user_api/templates/user_api/edx_ace/deletionnotificationmessage/email/body.html
+++ b/openedx/core/djangoapps/user_api/templates/user_api/edx_ace/deletionnotificationmessage/email/body.html
@@ -2,6 +2,7 @@
{% load i18n %}
{% block content %}
+{% with contact_email=''|safe|add:contact_email|add:''|safe %}
+{% endwith %}
{% endblock %}