mobile app themes
This commit is contained in:
65
app.py
65
app.py
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user