Files
TEMP_spec_system_V3/SMTP_CONFIGURATION_UPDATE.md
beabigegg bdfda30ca8 3rd
2025-08-28 11:51:04 +08:00

4.0 KiB
Raw Permalink Blame History

SMTP 配置更新說明

更新日期2025-01-28

一、更新背景

根據與 IT 部門確認,郵件伺服器 mail.panjit.com.tw 的 Port 25 支援無密碼認證的系統派送郵件功能。因此將系統從原本的 Port 465需要認證改為 Port 25無需認證的方式發送郵件。

二、主要變更內容

1. Config 配置新增項目

config.py 中新增以下配置選項:

SMTP_USE_SSL = os.getenv('SMTP_USE_SSL', 'false').lower() in ['true', '1', 't']
SMTP_SENDER_EMAIL = os.getenv('SMTP_SENDER_EMAIL', 'temp-spec-system@panjit.com.tw')
SMTP_SENDER_PASSWORD = os.getenv('SMTP_SENDER_PASSWORD', '')  # Port 25 不需要密碼
SMTP_AUTH_REQUIRED = os.getenv('SMTP_AUTH_REQUIRED', 'false').lower() in ['true', '1', 't']

2. 發送邏輯優化

更新 utils.py 中的 send_email 函式:

  • 支援多種 SMTP 連接方式
  • Port 465SSL + 認證
  • Port 587TLS + 認證
  • Port 25無加密 + 無認證(系統派送)

3. 環境變數配置

更新 .env.example 提供三種配置方案的範例。

三、新的配置方案

方案 1Port 25 無認證(推薦)

SMTP_SERVER=mail.panjit.com.tw
SMTP_PORT=25
SMTP_USE_TLS=false
SMTP_USE_SSL=false
SMTP_AUTH_REQUIRED=false
SMTP_SENDER_EMAIL=temp-spec-system@panjit.com.tw
SMTP_SENDER_PASSWORD=

適用場景

  • 內部郵件伺服器
  • 系統自動發送通知郵件
  • 不需要個人帳號認證

方案 2Port 587 + TLS + 認證

SMTP_SERVER=smtp.company.com
SMTP_PORT=587
SMTP_USE_TLS=true
SMTP_USE_SSL=false
SMTP_AUTH_REQUIRED=true
SMTP_SENDER_EMAIL=noreply@company.com
SMTP_SENDER_PASSWORD=smtp_password

適用場景

  • 外部 SMTP 服務
  • 需要認證的郵件伺服器
  • 使用 STARTTLS 加密

方案 3Port 465 + SSL + 認證

SMTP_SERVER=smtp.gmail.com
SMTP_PORT=465
SMTP_USE_TLS=false
SMTP_USE_SSL=true
SMTP_AUTH_REQUIRED=true
SMTP_SENDER_EMAIL=yourapp@gmail.com
SMTP_SENDER_PASSWORD=app_password

適用場景

  • Gmail 等外部服務
  • 需要 SSL 加密連接
  • 高安全性要求

四、實施步驟

1. 更新環境變數

修改您的 .env 檔案,使用方案 1 的配置:

SMTP_SERVER=mail.panjit.com.tw
SMTP_PORT=25
SMTP_USE_TLS=false
SMTP_USE_SSL=false
SMTP_AUTH_REQUIRED=false
SMTP_SENDER_EMAIL=temp-spec-system@panjit.com.tw
SMTP_SENDER_PASSWORD=

2. 設定適當的寄件者郵件地址

建議使用有意義的系統郵件地址,例如:

  • temp-spec-system@panjit.com.tw
  • tempspec-notification@panjit.com.tw
  • noreply-tempspec@panjit.com.tw

3. 重啟應用程式

更新配置後,重啟 Flask 應用程式以載入新的 SMTP 設定。

4. 測試郵件功能

建議在正式環境使用前,先測試郵件發送功能:

  • 啟用一個測試規範
  • 驗證郵件是否正常發送
  • 檢查郵件格式和內容

五、向後相容性

此次更新完全向後相容:

  • 原有使用 Port 465/587 + 認證的配置仍然有效
  • 系統會根據配置自動選擇適當的連接方式
  • 不會影響現有的郵件發送功能

六、除錯訊息

系統提供詳細的除錯訊息,包括:

  • SMTP 連接方式SSL/TLS/一般)
  • 認證狀態
  • 郵件發送結果
  • 錯誤診斷訊息

查看應用程式日誌可以了解郵件發送的詳細過程。

七、注意事項

  1. 寄件者地址:使用系統郵件地址,避免使用個人郵件地址
  2. 網路安全Port 25 通常在防火牆中開放,但請確認網路連通性
  3. 郵件限制:部分郵件伺服器可能有發送頻率限制
  4. 監控建議:建議監控郵件發送成功率和錯誤日誌

八、疑難排解

常見問題

Q: 郵件發送失敗,顯示連接拒絕 A: 檢查 SMTP_SERVER 和 SMTP_PORT 設定是否正確

Q: 郵件可以發送但收不到 A: 檢查寄件者郵件地址是否為有效的公司郵件地址

Q: 系統顯示認證失敗 A: 確認 SMTP_AUTH_REQUIRED=falsePort 25 不需要認證

Q: 要如何切換回認證模式 A: 修改 .env 檔案,設定 SMTP_AUTH_REQUIRED=true 並提供正確的密碼