docs: 邮件发送必须加Date头和Reply-To头

This commit is contained in:
2026-04-14 17:10:09 +08:00
parent bbabee1b37
commit 4a56d4808d

View File

@@ -82,25 +82,40 @@ git push origin v1.0.0
| 本地LLM | http://192.168.2.5:1234/v1 | qwen3.5-4b | | 本地LLM | http://192.168.2.5:1234/v1 | qwen3.5-4b |
| API Key | sk-lm-fuP5tGU8:Hi7YU87jHyDP6Ay8Tl2j | | | API Key | sk-lm-fuP5tGU8:Hi7YU87jHyDP6Ay8Tl2j | |
### SMTP邮件发送经验 ⭐ ### SMTP邮件发送经验 ⭐⭐⭐
**端口587无SSL的正确做法** **端口587无SSL的正确做法mail.tphai.com**
```python ```python
import smtplib import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from datetime import datetime
server = smtplib.SMTP(host, 587) # 直接连接不用SMTP_SSL server = smtplib.SMTP(host, 587) # 直接连接不用SMTP_SSL
server.ehlo() server.ehlo()
server.login(user, pass) server.login(user, pass)
server.sendmail(from, to, msg)
msg = MIMEMultipart()
msg['From'] = user
msg['To'] = to_addr
msg['Subject'] = subject
msg['Date'] = datetime.now().strftime('%a, %d %b %Y %H:%M:%S +0800') # 必须加!
msg['Reply-To'] = to_addr # 必须加!
msg.attach(MIMEText(body, 'plain', 'utf-8'))
server.sendmail(user, to_addr, msg.as_string())
server.quit() server.quit()
``` ```
**错误做法(会导致邮件丢失):** **关键点(不加会导致邮件丢失):**
- ❌ 使用 `server.starttls()` - 服务器不支持STARTTLS时会报错即使跳过也可能导致邮件格式问题 - ✅ 必须加 `msg['Date']` 头 - 部分邮件服务器不接受无Date头的邮件
- ❌ 使用 `SMTP_SSL(host, 587)` - 587端口不是SSL端口 - ✅ 必须加 `msg['Reply-To']`
- ✅ 必须调用 `server.ehlo()`
**服务器返回解读** **错误做法**
- `{}` 空字典 = 服务器已接收,等待投递 - ❌ 使用 `server.starttls()` - 服务器不支持会导致邮件丢失
- 有内容 = 投递失败的收件人列表 - ❌ 使用 `SMTP_SSL(host, 587)` - 587不是SSL端口
- ❌ 不加 Date 头 - 部分服务器会丢弃
**mail.tphai.com 配置:** **mail.tphai.com 配置:**
- 主机: mail.tphai.com - 主机: mail.tphai.com