from __future__ import annotations import os from email.message import EmailMessage import aiosmtplib class SmtpWelcomeEmailSender: def __init__(self) -> None: self._host = os.getenv("SMTP_HOST", "localhost") self._port = int(os.getenv("SMTP_PORT", "1025")) self._username = os.getenv("SMTP_USERNAME") self._password = os.getenv("SMTP_PASSWORD") self._from_email = os.getenv("SMTP_FROM_EMAIL", "noreply@example.com") self._use_tls = os.getenv("SMTP_USE_TLS", "false").lower() == "true" async def send_welcome(self, *, to_email: str, full_name: str) -> None: msg = EmailMessage() msg["From"] = self._from_email msg["To"] = to_email msg["Subject"] = "Welcome!" msg.set_content(f"Hi, {full_name}! Welcome to our service.") await aiosmtplib.send( msg, hostname=self._host, port=self._port, username=self._username, password=self._password, start_tls=self._use_tls, )