mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-03 09:51:11 -05:00
Add HTML email
Make the SES client optionally pass through HTML and text body, as per: http://docs.aws.amazon.com/ses/latest/APIReference/API_Body.html Gets the message as HTML from: https://github.com/alphagov/notifications-utils/pull/12
This commit is contained in:
@@ -267,7 +267,8 @@ def send_email(service_id, notification_id, subject, from_address, encrypted_not
|
|||||||
from_address,
|
from_address,
|
||||||
notification['to'],
|
notification['to'],
|
||||||
subject,
|
subject,
|
||||||
template.replaced
|
body=template.replaced,
|
||||||
|
html_body=template.as_HTML_email,
|
||||||
)
|
)
|
||||||
update_notification_reference_by_id(notification_id, reference)
|
update_notification_reference_by_id(notification_id, reference)
|
||||||
except AwsSesClientException as e:
|
except AwsSesClientException as e:
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ class AwsSesClient(EmailClient):
|
|||||||
to_addresses,
|
to_addresses,
|
||||||
subject,
|
subject,
|
||||||
body,
|
body,
|
||||||
|
html_body='',
|
||||||
reply_to_addresses=None):
|
reply_to_addresses=None):
|
||||||
try:
|
try:
|
||||||
if isinstance(to_addresses, str):
|
if isinstance(to_addresses, str):
|
||||||
@@ -50,6 +51,15 @@ class AwsSesClient(EmailClient):
|
|||||||
elif reply_to_addresses is None:
|
elif reply_to_addresses is None:
|
||||||
reply_to_addresses = []
|
reply_to_addresses = []
|
||||||
|
|
||||||
|
body = {
|
||||||
|
'Text': {'Data': body}
|
||||||
|
}
|
||||||
|
|
||||||
|
if html_body:
|
||||||
|
body.update({
|
||||||
|
'Html': {'Data': html_body}
|
||||||
|
})
|
||||||
|
|
||||||
start_time = monotonic()
|
start_time = monotonic()
|
||||||
response = self._client.send_email(
|
response = self._client.send_email(
|
||||||
Source=source,
|
Source=source,
|
||||||
@@ -62,9 +72,7 @@ class AwsSesClient(EmailClient):
|
|||||||
'Subject': {
|
'Subject': {
|
||||||
'Data': subject,
|
'Data': subject,
|
||||||
},
|
},
|
||||||
'Body': {
|
'Body': body
|
||||||
'Text': {
|
|
||||||
'Data': body}}
|
|
||||||
},
|
},
|
||||||
ReplyToAddresses=reply_to_addresses)
|
ReplyToAddresses=reply_to_addresses)
|
||||||
elapsed_time = monotonic() - start_time
|
elapsed_time = monotonic() - start_time
|
||||||
|
|||||||
@@ -21,4 +21,4 @@ monotonic==0.3
|
|||||||
|
|
||||||
git+https://github.com/alphagov/notifications-python-client.git@0.2.6#egg=notifications-python-client==0.2.6
|
git+https://github.com/alphagov/notifications-python-client.git@0.2.6#egg=notifications-python-client==0.2.6
|
||||||
|
|
||||||
git+https://github.com/alphagov/notifications-utils.git@2.0.1#egg=notifications-utils==2.0.1
|
git+https://github.com/alphagov/notifications-utils.git@3.1.0#egg=notifications-utils==3.1.0
|
||||||
|
|||||||
@@ -37,6 +37,11 @@ from tests.app.conftest import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class AnyStringWith(str):
|
||||||
|
def __eq__(self, other):
|
||||||
|
return self in other
|
||||||
|
|
||||||
|
|
||||||
def firetext_error():
|
def firetext_error():
|
||||||
return {'code': 0, 'description': 'error'}
|
return {'code': 0, 'description': 'error'}
|
||||||
|
|
||||||
@@ -390,7 +395,8 @@ def test_should_send_email_if_restricted_service_and_valid_email(notify_db, noti
|
|||||||
"email_from",
|
"email_from",
|
||||||
"test@restricted.com",
|
"test@restricted.com",
|
||||||
"subject",
|
"subject",
|
||||||
template.content
|
body=template.content,
|
||||||
|
html_body=AnyStringWith(template.content)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -452,7 +458,8 @@ def test_should_use_email_template_and_persist(sample_email_template_with_placeh
|
|||||||
"email_from",
|
"email_from",
|
||||||
"my_email@my_email.com",
|
"my_email@my_email.com",
|
||||||
"subject",
|
"subject",
|
||||||
"Hello Jo"
|
body="Hello Jo",
|
||||||
|
html_body=AnyStringWith("Hello Jo")
|
||||||
)
|
)
|
||||||
persisted_notification = notifications_dao.get_notification(
|
persisted_notification = notifications_dao.get_notification(
|
||||||
sample_email_template_with_placeholders.service_id, notification_id
|
sample_email_template_with_placeholders.service_id, notification_id
|
||||||
@@ -515,7 +522,8 @@ def test_should_use_email_template_and_persist_without_personalisation(
|
|||||||
"email_from",
|
"email_from",
|
||||||
"my_email@my_email.com",
|
"my_email@my_email.com",
|
||||||
"subject",
|
"subject",
|
||||||
"This is a template"
|
body="This is a template",
|
||||||
|
html_body=AnyStringWith("This is a template")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -577,7 +585,8 @@ def test_should_persist_notification_as_failed_if_email_client_fails(sample_emai
|
|||||||
"email_from",
|
"email_from",
|
||||||
"my_email@my_email.com",
|
"my_email@my_email.com",
|
||||||
"subject",
|
"subject",
|
||||||
sample_email_template.content
|
body=sample_email_template.content,
|
||||||
|
html_body=AnyStringWith(sample_email_template.content)
|
||||||
)
|
)
|
||||||
persisted_notification = notifications_dao.get_notification(sample_email_template.service_id, notification_id)
|
persisted_notification = notifications_dao.get_notification(sample_email_template.service_id, notification_id)
|
||||||
assert persisted_notification.id == notification_id
|
assert persisted_notification.id == notification_id
|
||||||
|
|||||||
Reference in New Issue
Block a user