3rd
This commit is contained in:
152
SMTP_CONFIGURATION_UPDATE.md
Normal file
152
SMTP_CONFIGURATION_UPDATE.md
Normal file
@@ -0,0 +1,152 @@
|
||||
# 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 465:SSL + 認證
|
||||
- Port 587:TLS + 認證
|
||||
- Port 25:無加密 + 無認證(系統派送)
|
||||
|
||||
### 3. 環境變數配置
|
||||
更新 `.env.example` 提供三種配置方案的範例。
|
||||
|
||||
## 三、新的配置方案
|
||||
|
||||
### 方案 1:Port 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=
|
||||
```
|
||||
|
||||
**適用場景**:
|
||||
- 內部郵件伺服器
|
||||
- 系統自動發送通知郵件
|
||||
- 不需要個人帳號認證
|
||||
|
||||
### 方案 2:Port 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 加密
|
||||
|
||||
### 方案 3:Port 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=false,Port 25 不需要認證
|
||||
|
||||
**Q: 要如何切換回認證模式**
|
||||
A: 修改 .env 檔案,設定 SMTP_AUTH_REQUIRED=true 並提供正確的密碼
|
Reference in New Issue
Block a user