import smtplib from email.message import EmailMessage from app.config import get_settings def send_token_email(*, recipient: str, token: str, kind: str) -> None: settings = get_settings() if not settings.smtp_host: return path = "invite/accept" if kind == "invite" else "reset-password" link = f"{settings.public_base_url.rstrip('/')}/{path}?token={token}" subject = "Finance invitation / Приглашение" if kind == "invite" else "Finance password reset" message = EmailMessage() message["From"] = settings.smtp_from message["To"] = recipient message["Subject"] = subject message.set_content(f"Open this one-time link / Откройте одноразовую ссылку:\n\n{link}\n") with smtplib.SMTP(settings.smtp_host, settings.smtp_port, timeout=10) as client: if settings.smtp_use_tls: client.starttls() client.send_message(message)