From a952d2782e9596ad491ea06ca752fb9186e42716 Mon Sep 17 00:00:00 2001 From: Alex Sadleir Date: Wed, 12 Oct 2016 17:16:57 +1100 Subject: [PATCH] Add a return address for bounced emails --- dmutils/email.py | 4 +++- tests/test_email.py | 8 ++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/dmutils/email.py b/dmutils/email.py index 9bfcf656..688e3d85 100644 --- a/dmutils/email.py +++ b/dmutils/email.py @@ -53,7 +53,8 @@ def send_email(to_email_addresses, email_body, subject, from_email, from_name, r } if 'DM_EMAIL_BCC_ADDRESS' in current_app.config: destination_addresses['BccAddresses'] = [current_app.config['DM_EMAIL_BCC_ADDRESS']] - + if 'DM_EMAIL_RETURN_ADDRESS' in current_app.config: + return_address = current_app.config['DM_EMAIL_RETURN_ADDRESS'] result = email_client.send_email( Source=u"{} <{}>".format(from_name, from_email), Destination=destination_addresses, @@ -69,6 +70,7 @@ def send_email(to_email_addresses, email_body, subject, from_email, from_name, r } } }, + ReturnPath=return_address or reply_to or from_email, ReplyToAddresses=[reply_to or from_email], ) except botocore.exceptions.ClientError as e: diff --git a/tests/test_email.py b/tests/test_email.py index 5c7a295c..3fd65ed3 100644 --- a/tests/test_email.py +++ b/tests/test_email.py @@ -16,6 +16,7 @@ TEST_SECRET_KEY = 'TestKeyTestKeyTestKeyTestKeyTestKeyTestKeyX=' TEST_ARCHIVE_ADDRESS = 'marketplace+archive@digital.gov.au' +TEST_RETURN_ADDRESS = 'marketplace+returned@digital.gov.au' @pytest.yield_fixture @@ -33,6 +34,7 @@ def email_app(app): app.config['SECRET_KEY'] = TEST_SECRET_KEY app.config['RESET_PASSWORD_SALT'] = 'PassSalt' app.config['DM_EMAIL_BCC_ADDRESS'] = TEST_ARCHIVE_ADDRESS + app.config['DM_EMAIL_RETURN_ADDRESS'] = TEST_RETURN_ADDRESS yield app @@ -51,7 +53,8 @@ def test_calls_send_email_with_correct_params(email_app, email_client): Message={'Body': {'Html': {'Charset': 'UTF-8', 'Data': 'body'}}, 'Subject': {'Charset': 'UTF-8', 'Data': 'subject'}}, Destination={'ToAddresses': ['email_address'], 'BccAddresses': [TEST_ARCHIVE_ADDRESS]}, - Source=u'from_name ' + Source=u'from_name ', + ReturnPath=TEST_RETURN_ADDRESS ) @@ -87,7 +90,8 @@ def test_calls_send_email_with_alternative_reply_to(email_app, email_client): Message={'Body': {'Html': {'Charset': 'UTF-8', 'Data': 'body'}}, 'Subject': {'Charset': 'UTF-8', 'Data': 'subject'}}, Destination={'ToAddresses': ['email_address'], 'BccAddresses': [TEST_ARCHIVE_ADDRESS]}, - Source=u'from_name ' + Source=u'from_name ', + ReturnPath=TEST_RETURN_ADDRESS )