#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ PerToolBox Server - 腾讯企业邮箱服务 Copyright (C) 2024 Sea Network Technology Studio Author: Canglan License: AGPL v3 """ import logging from typing import Optional from ..config import settings logger = logging.getLogger(__name__) async def send_email(recipient: str, code: str) -> bool: """发送邮件验证码(腾讯企业邮)""" if not all([ settings.SMTP_USER, settings.SMTP_PASSWORD, settings.SMTP_FROM ]): logger.warning("邮件服务未配置,使用模拟验证码") return True try: import aiosmtplib from email.mime.text import MIMEText subject = "PerToolBox 验证码" body = f"您的验证码是:{code},5分钟内有效。" msg = MIMEText(body, 'plain', 'utf-8') msg['Subject'] = subject msg['From'] = settings.SMTP_FROM msg['To'] = recipient await aiosmtplib.send( msg, hostname=settings.SMTP_HOST, port=settings.SMTP_PORT, username=settings.SMTP_USER, password=settings.SMTP_PASSWORD, use_tls=True ) logger.info(f"邮件发送成功: {recipient}") return True except Exception as e: logger.error(f"邮件发送异常: {e}") return False