def __send_smtp_email(self, recipients, subject, html_body, text_body):
        """Send an email using SMTP

        Args:
            recipients (`list` of `str`): List of recipient email addresses
            subject (str): Subject of the email
            html_body (str): HTML body of the email
            text_body (str): Text body of the email

        Returns:
            `None`
        """
        smtp = smtplib.SMTP(
            dbconfig.get('smtp_server', NS_EMAIL, 'localhost'),
            dbconfig.get('smtp_port', NS_EMAIL, 25)
        )
        source_arn = dbconfig.get('source_arn', NS_EMAIL)
        return_arn = dbconfig.get('return_path_arn', NS_EMAIL)
        from_arn = dbconfig.get('from_arn', NS_EMAIL)
        msg = MIMEMultipart('alternative')

        # Set SES options if needed
        if source_arn and from_arn and return_arn:
            msg['X-SES-SOURCE-ARN'] = source_arn
            msg['X-SES-FROM-ARN'] = from_arn
            msg['X-SES-RETURN-PATH-ARN'] = return_arn

        msg['Subject'] = subject
        msg['To'] = ','.join(recipients)
        msg['From'] = self.sender

        # Check body types to avoid exceptions
        if html_body:
            html_part = MIMEText(html_body, 'html')
            msg.attach(html_part)
        if text_body:
            text_part = MIMEText(text_body, 'plain')
            msg.attach(text_part)

        # TLS if needed
        if dbconfig.get('smtp_tls', NS_EMAIL, False):
            smtp.starttls()

        # Login if needed
        username = dbconfig.get('smtp_username', NS_EMAIL)
        password = dbconfig.get('smtp_password', NS_EMAIL)
        if username and password:
            smtp.login(username, password)

        smtp.sendmail(self.sender, recipients, msg.as_string())
        smtp.quit()
Send an email using SMTP

        Args:
            recipients (`list` of `str`): List of recipient email addresses
            subject (str): Subject of the email
            html_body (str): HTML body of the email
            text_body (str): Text body of the email

        Returns:
            `None`