newsreport_agent_for_traffic/EMAIL_GUIDE.md

154 lines
2.9 KiB
Markdown
Raw 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.

# 邮件发送功能指南
## 当前发送链路
项目中与邮件相关的入口有两个:
1. `auto_report_and_email.py`
2. `email_web_app.py`
两者都依赖:
- `EMAIL_SENDER`
- `EMAIL_PASSWORD`
- `email_sender.py`
当前默认 SMTP 发送为 QQ 邮箱。
## 环境变量
```env
EMAIL_SENDER=你的QQ邮箱@qq.com
EMAIL_PASSWORD=你的QQ邮箱SMTP授权码
EMAIL_RECIPIENTS=收件人1@qq.com,收件人2@qq.com
```
说明:
- `EMAIL_PASSWORD` 必须是 SMTP 授权码,不是 QQ 登录密码
- `EMAIL_RECIPIENTS` 只对 `auto_report_and_email.py` 默认收件人有意义
- Web 界面使用 `data/managed_recipients.json` 管理收件人
## 方式一:脚本发送
### 完整流程后发送
```bash
python auto_report_and_email.py --mode full --sources all
```
### 基于现有向量库生成报告并发送
```bash
python auto_report_and_email.py --mode report
```
### 只发送当前 `data/` 中最新报告
```bash
python auto_report_and_email.py --mode send
```
## 方式二Web 界面发送
```bash
python email_web_app.py
```
默认访问:
```text
http://127.0.0.1:7860
```
### 当前页面功能
#### 发送对象管理
- 新增邮箱
- 删除邮箱
- 持久化到 `data/managed_recipients.json`
#### 单次发送
当前“单次发送”按钮执行的不是“发送已有报告文件”,而是:
1. 调用 `main.py --mode full --sources all`
2. 全站抓取一次
3. 更新本地向量库
4. 生成最新报告
5. 将最新报告发送给勾选的收件人
#### 每周定时发送配置
页面支持保存:
- 是否开启
- 星期几
- 发送时间
- 使用全部已管理收件人
配置文件位置:
- `data/scheduled_send_config.json`
### 关于定时发送的当前限制
`email_web_app.py` 中保留了后台调度线程实现,但脚本直接运行时当前没有自动调用 `start_scheduler_thread()`
因此当前可确认的状态是:
- 页面可以保存定时配置
- “单次发送”可以正常工作
- 如果要稳定执行真正的自动定时发送,建议优先使用操作系统定时任务调用 `auto_report_and_email.py`
推荐做法:
```bash
python auto_report_and_email.py --mode full --sources all
```
由 Windows 任务计划程序或 Linux cron 定时执行。
## 邮件内容
默认会发送:
- 报告附件:`report_*.txt`
- 默认主题:时间戳主题,或者前端自定义主题
## 常见问题
### SMTP 认证失败
检查:
1. 是否把 QQ 登录密码当成了授权码
2. QQ 邮箱是否开启 SMTP
3. 授权码是否重新生成后未同步到 `.env`
### Web 页面提示配置不完整
检查:
- `EMAIL_SENDER`
- `EMAIL_PASSWORD`
### 单次发送失败
单次发送依赖完整流程,失败原因可能来自:
1. `main.py --mode full` 报错
2. 某个数据源抓取异常
3. 报告未生成
4. SMTP 发送失败
### 发送不到收件箱
检查:
1. 垃圾邮件箱
2. 发件箱是否有投递记录
3. 收件地址拼写是否正确