navicat不支持直接推送共享报表邮件,必须先将共享报表在本地打开、验证sql、另存为本地报表,再通过导出配置生成.export文件,加入批处理作业并启用“添加附件”,最后绑定smtp授权码配置和计划任务。

Navicat 本身不支持直接将「团队共享报表」(比如存于 Navicat On-Prem Server 或协同合作云中的报表)自动推送邮件。必须先在本地客户端中把报表落地为可执行的导出任务,再通过批处理作业绑定发送逻辑——这是最常被忽略的前提。
为什么不能直接用共享报表触发邮件
Navicat 的「报表」对象(Report)在协同合作或 On-Prem Server 中仅作为设计态文件存在,不包含执行上下文:没有数据库连接绑定、无默认导出格式、也不参与本地计划调度。邮件发送功能只响应本地客户端中已保存的「导出查询」或「批处理作业」。
常见错误现象:计划任务里找不到共享报表、点击“添加附件”时列表为空、预览能看但定时运行失败并报“数据源不可用”。
- 共享报表需先在本地双击打开 → 点击「设计」→ 右键 SQL 区域选「编辑SQL」→ 确保语句可独立执行(不含变量或未定义别名)
- 必须手动另存为本地报表(
Ctrl+S,路径默认在My Documents\Navicat\Reports),否则无法被批处理作业识别 - 若报表依赖参数(如日期范围),需改写为固定值或使用 Navicat 支持的内置函数(如
NOW()、CURDATE()),动态参数在自动任务中不生效
怎样把共享报表转成可邮件推送的本地任务
核心是绕过「共享报表直接调用」这个无效路径,走「本地导出 + 批处理封装」的标准链路:
- 在本地 Navicat 中打开共享来的报表 → 点击「预览」确认数据正确 → 切到「导出」标签页
- 选择格式(
Excel File(File)或PDF),勾选「包含列标题」,目标路径建议设为固定目录(如D:\navicat_exports\report_daily.xlsx) - 点击「保存」,命名导出配置(如
daily_sales_export),这会生成一个.export文件,它才是后续任务的输入源 - 进入「自动运行」→「新建批处理作业」→ 双击刚保存的
daily_sales_export→ 点击「添加附件」(关键!不点这个,邮件只有正文没附件)
SMTP 配置和授权码容易踩的坑
Navicat 的邮件发送严重依赖 SMTP 设置,而多数邮箱(尤其是 QQ、163、新浪)已停用密码直连,强制要求使用「授权码」而非登录密码:
- QQ 邮箱:SMTP 服务器填
smtp.qq.com,端口587(不是 25),用户名填完整邮箱地址,密码栏必须粘贴「QQ 邮箱设置 → 账户 → POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 → 生成授权码」得到的 16 位字符串 - 163 邮箱:SMTP 服务器为
smtp.163.com,端口465或994(SSL),同样必须用授权码;若填错,错误信息通常是Authentication failed或535 Error - 测试务必点「传送测试邮件」按钮,不要只看「保存成功」——很多配置保存后不校验连通性,直到真正执行才爆错
计划任务启动失败的典型原因
即使所有配置都对,任务仍可能卡在「未运行」状态,本质是 Windows 权限和触发器机制问题:
- 「设置计划任务」时弹出的管理员密码框,必须输入当前 Windows 登录用户的**本地管理员密码**(不是 Navicat 密码,也不是邮箱密码)
- 任务默认以「交互式用户」运行,若电脑锁屏或无人登录,Windows 会阻止 GUI 类操作(包括 Navicat 导出),此时需在任务属性 → 「常规」选项卡中勾选「不管用户是否登录都要运行」并启用「不存储密码」(会限制部分 GUI 操作,但导出 Excel 不受影响)
- 导出路径若含中文或空格(如
D:\我的报表\),部分旧版 Navicat 会静默失败,建议全英文路径 + 下划线命名
真正的难点不在配置界面点击几下,而在于理解 Navicat 的任务模型是「本地客户端进程驱动」,所有自动化动作都发生在你自己的电脑上。一旦关机、休眠、远程桌面断开,或者 Windows 组策略禁用了计划任务服务,整个链路就中断——它不像云服务那样后台常驻。如果需要服务级稳定性,得换用数据库侧脚本(如 mysqldump + cron + mailx)或专用 BI 工具。











