import logging import boto3 logger = logging.getLogger(__name__) class EmailClient: def __init__( self, email_sender: str, email_sender_name: str, email_source_arn: str, ) -> None: self.ses_client = boto3.client("ses") # type: ignore[assignment] self.email_sender = email_sender self.email_sender_name = email_sender_name self.email_source_arn = email_source_arn def send_email( self, *, email_address: str, email_title: str, email_content: str, message_id: str, ) -> None: logger.debug( "Debug message, check params", extra={ "email_address": email_address, "email_sender": self.email_sender, "email_sender_name": self.email_sender_name, "email_source_arn": self.email_source_arn, "message_id": message_id, }, ) self.ses_client.send_email( SourceArn=self.email_source_arn, Source=f"{self.email_sender_name} <{self.email_sender}>", ReturnPathArn=self.email_source_arn, ReturnPath=self.email_sender, Destination={ "ToAddresses": [ email_address, ], }, Message={ "Body": { "Html": { "Charset": "UTF-8", "Data": email_content, } }, "Subject": { "Charset": "UTF-8", "Data": email_title, }, }, ) logger.info("Email sent", extra={"message_id": message_id})