Skip to content

email

azure_bootstrap.email

Azure Communication Services email sender.

Classes:

Name Description
AcsEmailSender

Transactional email sender via Azure Communication Services.

AcsEmailSender

AcsEmailSender(*, connection_string: str | None = None, sender_address: str | None = None)

Transactional email sender via Azure Communication Services.

Methods:

Name Description
send

Send an email; returns message id on success.

Source code in azure_bootstrap/email/__init__.py
def __init__(
    self,
    *,
    connection_string: str | None = None,
    sender_address: str | None = None,
) -> None:
    self._connection_string = connection_string or require_env("ACS_CONNECTION_STRING")
    self._sender = sender_address or require_env("ACS_SENDER_ADDRESS")
    self._client: Any = None

send

send(*, to: list[str], subject: str, html_body: str, plain_text: str | None = None) -> str

Send an email; returns message id on success.

Source code in azure_bootstrap/email/__init__.py
def send(
    self,
    *,
    to: list[str],
    subject: str,
    html_body: str,
    plain_text: str | None = None,
) -> str:
    """Send an email; returns message id on success."""
    message: dict[str, Any] = {
        "senderAddress": self._sender,
        "recipients": {"to": [{"address": addr} for addr in to]},
        "content": {"subject": subject, "html": html_body},
    }
    if plain_text:
        message["content"]["plainText"] = plain_text
    poller = (
        self._client.begin_send(message)
        if self._client
        else self._get_client().begin_send(message)
    )
    result = poller.result()
    msg_id = getattr(result, "id", None) or getattr(result, "message_id", "unknown")
    _logger.info("ACS email sent id=%s to=%s", msg_id, to)
    return str(msg_id)