diff --git a/MEMORY.md b/MEMORY.md index 571c549..57c7ee2 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -82,25 +82,40 @@ git push origin v1.0.0 | 本地LLM | http://192.168.2.5:1234/v1 | qwen3.5-4b | | API Key | sk-lm-fuP5tGU8:Hi7YU87jHyDP6Ay8Tl2j | | -### SMTP邮件发送经验 ⭐ +### SMTP邮件发送经验 ⭐⭐⭐ -**端口587无SSL的正确做法:** +**端口587无SSL的正确做法(mail.tphai.com):** ```python 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.ehlo() 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.starttls()` - 服务器不支持STARTTLS时会报错,即使跳过也可能导致邮件格式问题 -- ❌ 使用 `SMTP_SSL(host, 587)` - 587端口不是SSL端口 +**关键点(不加会导致邮件丢失):** +- ✅ 必须加 `msg['Date']` 头 - 部分邮件服务器不接受无Date头的邮件 +- ✅ 必须加 `msg['Reply-To']` 头 +- ✅ 必须调用 `server.ehlo()` -**服务器返回解读:** -- `{}` 空字典 = 服务器已接收,等待投递 -- 有内容 = 投递失败的收件人列表 +**错误做法:** +- ❌ 使用 `server.starttls()` - 服务器不支持会导致邮件丢失 +- ❌ 使用 `SMTP_SSL(host, 587)` - 587不是SSL端口 +- ❌ 不加 Date 头 - 部分服务器会丢弃 **mail.tphai.com 配置:** - 主机: mail.tphai.com