You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批处理脚本传递日志文件名至邮件模板及多收件人配置问题

批处理脚本邮件通知问题解决方案

问题1:传递日志文件名到邮件模板

核心思路是在邮件模板中设置占位符,通过批处理动态替换占位符生成最终邮件内容,再调用sendmail.exe发送。

步骤:

  1. 创建带占位符的邮件模板(命名为email_template.txt):
From: batch-job-notify@yourcompany.com
To: it-admin@yourcompany.com
Subject: 作业执行状态:{{STATUS}}
Content-Type: text/plain; charset=utf-8

作业已完成,状态:*{{STATUS}}*
详细日志文件:{{LOG_FILE}}
  1. 批处理中实现占位符替换:
    用PowerShell完成替换(比批处理原生替换更稳定,支持特殊路径字符),示例代码:
@echo off
setlocal enabledelayedexpansion

:: 生成日志文件名(按你的规则)
set "LOG_DIR=C:\Temp\Logs"
for /f "tokens=1-6 delims=/: " %%a in ("%date% %time%") do (
    set "LOG_FILE=outputFile_%%a_%%b%%c%%d_%%e%%f%%~g.csv"
)
set "LOG_FULL_PATH=!LOG_DIR!\!LOG_FILE!"

:: 模拟作业执行结果
set "JOB_STATUS=成功"  :: 作业失败时改为"失败"

:: 生成临时邮件内容
set "TEMP_MAIL=%TEMP%\temp_mail_content.txt"
powershell -Command "(Get-Content 'email_template.txt') -replace '{{STATUS}}','!JOB_STATUS!' -replace '{{LOG_FILE}}','!LOG_FULL_PATH!' | Out-File '!TEMP_MAIL!' -Encoding UTF8"

:: 调用sendmail.exe发送邮件
sendmail.exe -t < "!TEMP_MAIL!"

:: 清理临时文件
del "!TEMP_MAIL!" >nul 2>&1
endlocal

问题2:邮件模板配置多收件人出错

多数sendmail.exe版本支持在To:字段用逗号分隔多个收件人,只需调整模板格式即可,无需多模板文件。

解决方法:

  1. 直接在模板中写多收件人:
    修改模板的To:行,格式如下(支持纯邮箱或带名称的格式):
To: admin1@yourcompany.com, 运维组 <it-support@yourcompany.com>, admin2@yourcompany.com
  1. 动态传递多收件人(可选):
    如果需要在批处理中动态指定收件人,同样用占位符替换:
  • 模板中To:行改为:To: {{TO_RECIPIENTS}}
  • 批处理中添加:
set "TO_RECIPIENTS=admin1@yourcompany.com, it-support@yourcompany.com, admin2@yourcompany.com"
  • 替换命令中增加对{{TO_RECIPIENTS}}的替换:
powershell -Command "(Get-Content 'email_template.txt') -replace '{{TO_RECIPIENTS}}','!TO_RECIPIENTS!' -replace '{{STATUS}}','!JOB_STATUS!' -replace '{{LOG_FILE}}','!LOG_FULL_PATH!' | Out-File '!TEMP_MAIL!' -Encoding UTF8"

注意事项:

  • 确保收件人格式符合邮件标准,逗号后可加空格(多数sendmail版本兼容)
  • 若仍报错,检查sendmail.exe的版本配置,部分轻量版本可能需要在命令行用多个参数,但优先用模板逗号分隔的方式

内容的提问来源于stack exchange,提问作者user27543998

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:46:05