navicat本身不提供独立定时分发能力,其“自动发报表”依赖系统调度器(如windows任务计划程序)定期启动客户端执行预设导出+邮件动作;关键在于必须先保存查询为“导出查询”,手动点击回形针图标添加附件,smtp密码须填授权码而非登录密码,并勾选计划任务的“只在用户登录时运行”。

Navicat 本身不提供独立服务级的定时分发能力,所谓“自动发报表”,本质是用系统调度器(如 Windows 任务计划程序)定期启动 Navicat 客户端,执行预设的导出 + 邮件动作。关键不在 Navicat 界面点几下,而在批处理作业是否绑定对了导出查询、附件是否手动添加、SMTP 是否用授权码。
必须先保存为“导出查询”,否则邮件附件永远为空
Navicat 的自动运行机制不识别未保存的原始 SQL。哪怕你写了 SELECT * FROM sales WHERE date = CURDATE(),只要没走完整导出流程并保存,批处理作业里拖进去的只是个空壳。
- 写好查询后,点击右上角
导出按钮 → 选 Excel 或 CSV(PDF/HTML 不支持作为邮件附件) - 在导出向导中勾选
使用文本限定符,编码选UTF-8 with BOM - 保存路径必须是全英文、无空格的绝对路径,例如
C:\navicat_exports\,不能是桌面或含中文的路径 - 文件名可含占位符,如
daily_report_<date>.xlsx</date>,Navicat 会自动替换为当天日期
批处理作业里“添加附件”是强制操作,不是可选项
在 工具 → 批处理作业 → 新建 中,把刚保存的导出查询拖入列表后,下方对应条目旁会出现一个回形针图标——必须手动点击它,否则邮件正文只显示“执行成功”,附件大小恒为 0 KB。
- 这个按钮只对“导出查询”类型生效;普通查询或数据传输任务点了也无效
- 一个批处理作业只能绑定一个附件;要发多张报表,得建多个独立作业
- 若附件没加载出来,检查该导出查询是否真出现在 Navicat 左侧
查询列表里
SMTP 配置必须填授权码,不是邮箱登录密码
在批处理作业的 高级 页签填邮箱参数时,密码 字段必须填 SMTP 授权码,QQ/163/Gmail 都需单独开启 POP3/IMAP 并生成专用密码,且多数只显示一次。
- 常用配置:
smtp.qq.com(端口 465,SSL 开启)、smtp.163.com(端口 465,SSL 开启)、smtp.gmail.com(端口 587,TLS 开启) - 测试必须点
测试按钮发送,不能只靠保存判断;失败提示通常是Authentication failed或Connection refused - 企业邮箱若受限,建议先用个人邮箱验证整条链路跑通再切换
计划任务必须勾选“只在用户登录时运行”
Windows 任务计划程序中,“不管用户是否登录都要运行”可以勾选,但“只在用户登录时运行”也必须勾选——否则 Excel/PDF 渲染引擎(GDI+)不可用,导出为空或报错 failed to export report。
- 程序路径填完整
"C:\Program Files\PremiumSoft\Navicat Premium 16\navicat.exe",注意英文双引号 - 参数栏严格写:
--batch-job="daily_report_export",名称须与批处理作业保存名完全一致 -
起始目录设为 Navicat 安装路径,否则找不到驱动或配置文件,可能报错0xc000007b
最常被忽略的是:导出查询没保存、附件没点回形针、SMTP 密码填了登录密码而非授权码、计划任务没勾选“只在用户登录时运行”。这四点任意一个出错,都会导致邮件发出去但附件为空,或者根本没生成文件。











