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

152 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# SMTP 配置更新說明
## 更新日期2025-01-28
## 一、更新背景
根據與 IT 部門確認,郵件伺服器 `mail.panjit.com.tw` 的 Port 25 支援無密碼認證的系統派送郵件功能。因此將系統從原本的 Port 465需要認證改為 Port 25無需認證的方式發送郵件。
## 二、主要變更內容
### 1. Config 配置新增項目
`config.py` 中新增以下配置選項:
```python
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 無認證(推薦)
```env
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 + 認證
```env
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 + 認證
```env
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 的配置:
```env
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 並提供正確的密碼