v1.0.0提交
This commit is contained in:
52
backend/utils/email.py
Normal file
52
backend/utils/email.py
Normal file
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
PerToolBox Server - 腾讯企业邮箱服务
|
||||
Copyright (C) 2024 Sea Network Technology Studio
|
||||
Author: Canglan <admin@sea-studio.top>
|
||||
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
|
||||
Reference in New Issue
Block a user