Windows 任务计划程序错误 2147746322 发送带附件的邮件

Windows 任务计划程序错误 2147746322 发送带附件的邮件

使用 Windows 任务计划程序的发送邮件操作发送 *.txt 附件时,作业失败,错误 ID 为 2147746322。

当使用 PowerShell 的 Send-MailMessage 命令以完全相同的参数发送时,邮件和附件可成功发送。

症状似乎与这里提到的相同:http://www.networksteve.com/forum/topic.php/Task_Scheduler_-_Can%27t_Send_Email/?TopicId=18073&Posts=0

答案1

经过大量调查,我们发现附加的文本文件中有一些换行符没有以回车符开头(即 \n 而不是 \r\n)。

删除这些独立的换行符可以解决问题。

如果对其他人有用,下面是删除文件中无效字符的脚本:

文件: RemoveInvalidLineBreaks.ps1

if ($args.length -gt 0 -AND 
    $args[0] -ne $NULL -AND 
    $args[0] -ne "") 
{ 
    $fn = $args[0]
    (Get-Content $fn) | Set-Content $fn
} 
else 
{
    write-error "No filename supplied"
}

用法示例:

(如果从 Windows 批处理文件调用)

powershell -ExecutionPolicy RemoteSigned ./RemoveInvalidLineBreaks.ps1 D:\TEST\myLogFile.txt

该脚本可以正常工作,因为Get-Content当不带参数使用时-Raw(该参数仅从 PS3 开始可用),它会一次读取文件的一行,将\r\n\n都视为行尾字符;但是当写回时,Set-Content只使用 Windows\r\n行尾约定;因此所有换行符都会被替换。

相关内容