Skip to content

Commit

Permalink
SESV2 send_email with HTML body (getmoto#6927)
Browse files Browse the repository at this point in the history
  • Loading branch information
forzagreen authored and toshyak committed Oct 26, 2023
1 parent 3e16835 commit 1d4b3b5
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 3 deletions.
7 changes: 6 additions & 1 deletion moto/sesv2/responses.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,16 @@ def send_email(self) -> str:
raw_data=base64.b64decode(content["Raw"]["Data"]).decode("utf-8"),
)
elif "Simple" in content:
content_body = content["Simple"]["Body"]
if "Html" in content_body:
body = content_body["Html"]["Data"]
else:
body = content_body["Text"]["Data"]
message = self.sesv2_backend.send_email( # type: ignore
source=from_email_address,
destinations=destination,
subject=content["Simple"]["Subject"]["Data"],
body=content["Simple"]["Body"]["Text"]["Data"],
body=body,
)
elif "Template" in content:
raise NotImplementedError("Template functionality not ready")
Expand Down
37 changes: 35 additions & 2 deletions tests/test_sesv2/test_sesv2.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from botocore.exceptions import ClientError
import pytest
from moto import mock_sesv2, mock_ses, settings
from moto.ses.models import ses_backends, RawMessage
from moto.ses.models import ses_backends, RawMessage, Message
from tests import DEFAULT_ACCOUNT_ID
from ..test_ses.test_ses_boto3 import get_raw_email

Expand Down Expand Up @@ -48,11 +48,44 @@ def test_send_email(ses_v1): # pylint: disable=redefined-outer-name

if not settings.TEST_SERVER_MODE:
backend = ses_backends[DEFAULT_ACCOUNT_ID]["us-east-1"]
msg: RawMessage = backend.sent_messages[0]
msg: Message = backend.sent_messages[0]
assert msg.subject == "test subject"
assert msg.body == "test body"


@mock_sesv2
def test_send_html_email(ses_v1): # pylint: disable=redefined-outer-name
# Setup
conn = boto3.client("sesv2", region_name="us-east-1")
ses_v1.verify_domain_identity(Domain="example.com")
kwargs = dict(
FromEmailAddress="[email protected]",
Destination={
"ToAddresses": ["[email protected]"],
},
Content={
"Simple": {
"Subject": {"Data": "test subject"},
"Body": {"Html": {"Data": "<h1>Test HTML</h1>"}},
},
},
)

# Execute
conn.send_email(**kwargs)

# Verify
send_quota = ses_v1.get_send_quota()
sent_count = int(send_quota["SentLast24Hours"])
assert sent_count == 1

if not settings.TEST_SERVER_MODE:
backend = ses_backends[DEFAULT_ACCOUNT_ID]["us-east-1"]
msg: Message = backend.sent_messages[0]
assert msg.subject == "test subject"
assert msg.body == "<h1>Test HTML</h1>"


@mock_sesv2
def test_send_raw_email(ses_v1): # pylint: disable=redefined-outer-name
# Setup
Expand Down

0 comments on commit 1d4b3b5

Please sign in to comment.