newsreport_agent_for_traffic/EMAIL_GUIDE.md

154 lines
2.9 KiB
Markdown
Raw Normal View History

2026-05-09 10:46:52 +08:00
# 邮件发送功能指南
## 当前发送链路
项目中与邮件相关的入口有两个:
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. 收件地址拼写是否正确