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