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 datetime import datetime, timedelta
from email.mime.text import MIMEText from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart from email.mime.multipart import MIMEMultipart
from email.utils import formatdate
from functools import wraps from functools import wraps
from flask import ( from flask import (
@@ -155,15 +156,73 @@ def send_email(to_email, subject, html_content):
smtp_user = os.getenv('SMTP_USER', '') smtp_user = os.getenv('SMTP_USER', '')
smtp_pass = os.getenv('SMTP_PASS', '') 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 = MIMEMultipart('alternative')
msg['From'] = f'"验证码" <{smtp_user}>' msg['From'] = smtp_user
msg['To'] = to_email msg['To'] = to_email
msg['Subject'] = subject msg['Subject'] = subject
msg['Date'] = formatdate(localtime=True)
msg.attach(MIMEText(html_content, 'html', 'utf-8')) 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.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(): def get_current_user():
return session.get('user') return session.get('user')