При отправке вложения * .txt с помощью действия «Отправить почту» в планировщике заданий Windows задание завершается ошибкой с идентификатором ошибки 2147746322.

При отправке с использованием команды PowerShell Send-MailMessage с точно такими же параметрами почта и вложение успешно отправляются.

Симптомы кажутся такими же, как упомянуто здесь: http://www.networksteve.com/forum/topic.php/Task_Scheduler_-_Can%27t_Send_Email/?TopicId=18073&Posts=0

1 ответ1

0

После долгих исследований мы обнаружили, что в прикрепляемом текстовом файле были некоторые переводы строк, которые не были обработаны возвратом каретки (т.е. \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 ; при этом все перерывы заменяются.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .