This commit is contained in:
beabigegg
2025-08-28 11:51:04 +08:00
parent 4f7f46b07a
commit bdfda30ca8
12 changed files with 441 additions and 222 deletions

View File

@@ -213,7 +213,7 @@ def process_recipients(recipients_str):
def send_email(to_addrs, subject, body):
"""
Sends an email using the SMTP settings from the config.
Enhanced with detailed debugging information.
Supports both authenticated (Port 465/587) and unauthenticated (Port 25) methods.
"""
print(f"[EMAIL DEBUG] 開始發送郵件...")
print(f"[EMAIL DEBUG] 收件者數量: {len(to_addrs)}")
@@ -224,14 +224,18 @@ def send_email(to_addrs, subject, body):
# 取得 SMTP 設定
smtp_server = current_app.config['SMTP_SERVER']
smtp_port = current_app.config['SMTP_PORT']
use_tls = current_app.config['SMTP_USE_TLS']
use_tls = current_app.config.get('SMTP_USE_TLS', False)
use_ssl = current_app.config.get('SMTP_USE_SSL', False)
sender_email = current_app.config['SMTP_SENDER_EMAIL']
sender_password = current_app.config['SMTP_SENDER_PASSWORD']
sender_password = current_app.config.get('SMTP_SENDER_PASSWORD', '')
auth_required = current_app.config.get('SMTP_AUTH_REQUIRED', False)
print(f"[EMAIL DEBUG] SMTP 設定:")
print(f"[EMAIL DEBUG] - 伺服器: {smtp_server}:{smtp_port}")
print(f"[EMAIL DEBUG] - 使用 TLS: {use_tls}")
print(f"[EMAIL DEBUG] - 使用 SSL: {use_ssl}")
print(f"[EMAIL DEBUG] - 寄件者: {sender_email}")
print(f"[EMAIL DEBUG] - 需要認證: {auth_required}")
print(f"[EMAIL DEBUG] - 有密碼: {'' if sender_password else ''}")
# 建立郵件內容
@@ -243,21 +247,29 @@ def send_email(to_addrs, subject, body):
print(f"[EMAIL DEBUG] 郵件內容建立完成")
# 連接 SMTP 伺服器
print(f"[EMAIL DEBUG] 連接 SMTP 伺服器 {smtp_server}:{smtp_port}...")
server = smtplib.SMTP(smtp_server, smtp_port)
if use_ssl and smtp_port == 465:
# Port 465 使用 SSL
print(f"[EMAIL DEBUG] 使用 SSL 連接 SMTP 伺服器 {smtp_server}:{smtp_port}...")
server = smtplib.SMTP_SSL(smtp_server, smtp_port)
else:
# Port 25 或 587 使用一般連接
print(f"[EMAIL DEBUG] 連接 SMTP 伺服器 {smtp_server}:{smtp_port}...")
server = smtplib.SMTP(smtp_server, smtp_port)
print(f"[EMAIL DEBUG] SMTP 伺服器連接成功")
if use_tls:
if use_tls and smtp_port == 587:
print(f"[EMAIL DEBUG] 啟用 TLS...")
server.starttls()
print(f"[EMAIL DEBUG] TLS 啟用成功")
if sender_password:
# 只在需要認證時才登入
if auth_required and sender_password:
print(f"[EMAIL DEBUG] 登入 SMTP 伺服器...")
server.login(sender_email, sender_password)
print(f"[EMAIL DEBUG] SMTP 登入成功")
else:
print(f"[EMAIL DEBUG] 無需密碼認證")
print(f"[EMAIL DEBUG] 使用匿名發送Port 25 無需認證")
# 發送郵件
print(f"[EMAIL DEBUG] 發送郵件...")