mobile app themes

This commit is contained in:
2026-02-28 18:24:33 +08:00
parent 6086f6588f
commit 0764566742

65
app.py
View File

@@ -8,6 +8,7 @@ import smtplib
from datetime import datetime, timedelta
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.utils import formatdate
from functools import wraps
from flask import (
@@ -155,15 +156,73 @@ def send_email(to_email, subject, html_content):
smtp_user = os.getenv('SMTP_USER', '')
smtp_pass = os.getenv('SMTP_PASS', '')
print(f'[邮件发送] 准备发送邮件到: {to_email}')
print(f'[邮件发送] SMTP服务器: {smtp_host}:{smtp_port}')
print(f'[邮件发送] 发件人: {smtp_user}')
if not smtp_user or not smtp_pass:
raise ValueError('SMTP_USER 或 SMTP_PASS 未配置')
msg = MIMEMultipart('alternative')
msg['From'] = f'"验证码" <{smtp_user}>'
msg['From'] = smtp_user
msg['To'] = to_email
msg['Subject'] = subject
msg['Date'] = formatdate(localtime=True)
msg.attach(MIMEText(html_content, 'html', 'utf-8'))
with smtplib.SMTP_SSL(smtp_host, smtp_port) as server:
# 尝试SSL连接端口465
try:
print(f'[邮件发送] 尝试SSL连接 (端口{smtp_port})...')
server = smtplib.SMTP_SSL(smtp_host, smtp_port, timeout=30)
server.set_debuglevel(0)
server.ehlo()
print(f'[邮件发送] SSL连接成功正在登录...')
server.login(smtp_user, smtp_pass)
server.sendmail(smtp_user, to_email, msg.as_string())
print(f'[邮件发送] 登录成功,正在发送邮件...')
server.sendmail(smtp_user, [to_email], msg.as_string())
server.quit()
print(f'[邮件发送] 邮件发送成功到 {to_email}')
return
except Exception as e:
print(f'[邮件发送] SSL方式失败: {e}')
# 尝试STARTTLS连接端口587
try:
print(f'[邮件发送] 尝试STARTTLS连接 (端口587)...')
server = smtplib.SMTP(smtp_host, 587, timeout=30)
server.set_debuglevel(0)
server.ehlo()
server.starttls()
server.ehlo()
print(f'[邮件发送] STARTTLS连接成功正在登录...')
server.login(smtp_user, smtp_pass)
print(f'[邮件发送] 登录成功,正在发送邮件...')
server.sendmail(smtp_user, [to_email], msg.as_string())
server.quit()
print(f'[邮件发送] 邮件发送成功到 {to_email}')
return
except Exception as e:
print(f'[邮件发送] STARTTLS(587)方式失败: {e}')
# 尝试STARTTLS连接端口25
try:
print(f'[邮件发送] 尝试STARTTLS连接 (端口25)...')
server = smtplib.SMTP(smtp_host, 25, timeout=30)
server.set_debuglevel(0)
server.ehlo()
server.starttls()
server.ehlo()
print(f'[邮件发送] STARTTLS连接成功正在登录...')
server.login(smtp_user, smtp_pass)
print(f'[邮件发送] 登录成功,正在发送邮件...')
server.sendmail(smtp_user, [to_email], msg.as_string())
server.quit()
print(f'[邮件发送] 邮件发送成功到 {to_email}')
return
except Exception as e:
print(f'[邮件发送] STARTTLS(25)方式失败: {e}')
raise Exception(f'所有邮件发送方式均失败请检查SMTP配置和网络连接')
def get_current_user():
return session.get('user')