2015-03-30 4 views
0

У меня есть сценарий ps1, который условно запускается из события из планировщика заданий. Событие, запускающее мой скрипт, - это еще одна задача, которая заканчивается и записывает «... успешно завершена» в журнал событий планировщика заданий. Когда это происходит, мой скрипт отправляет и электронную почту HTML (send-mailmessage) с прикрепленным файлом для конкретных пользователей. Проблема заключается в том, что она работает, когда я запускаю его вручную, но когда я настраивал условие (по-прежнему посылает электронную почту), но не приложив файл ... вот мой код:Send-mailmessage с приложением


$HTML = @" 
<!DOCTYPE html> 
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8"> 
    <TITLE></TITLE> 

$Messages 
</body></html> 
"@ 


$SMTPServer = "smtp.myserver.com" 
$SMTPPort = "1234" 
$Username = "[email protected]" 
$Password = "xyz-password" 
$to = "[email protected]" 
$bcc = "[email protected]" 
$subject = "My Import Alert" 
$attachment = "(unc path to the .csv)-$(get-date -f yyMMdd).csv" 
$message = New-Object System.Net.Mail.MailMessage 
$message.subject = $subject 
$message.body = $HTML 
$message.IsBodyHTML = $true 
$message.to.add($to) 
$message.bcc.add($bcc) 
$message.from = "Import Alerts <[email protected]>" 
$message.attachments.add($attachment) 
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort); 
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password); 
$SMTPMessage=New-Object System.Net.Mail.MailMessage 
$smtp.send($message) 

Итак, когда он запускается вручную, он отлично работает (с прикреплением) ... каждый раз !! Когда у меня он настроен на запуск через планировщик задач, он работает (отправляет электронное письмо), НО НЕ ОТНОСИТСЯ! ЭТО БЫЛО БЕСПЛАТНО, ДО СЕГОДНЯ (!)

Я не знаю, как отлаживать или тестировать это вообще ... любая помощь будет принята с благодарностью !!

спасибо !!! B-

+0

Вы не используете отправить-MailMessage в вашем коде. В своем описании вы говорите, что находитесь. Это действительно * сценарий, который вы используете в расписании? – alroc

+0

Имеет ли учетная запись пользователя, под которой выполняется запланированная задача, разрешение доступа к пути UNC к вложению? – alroc

ответ

0

Я относительно новый и уже работаю с PowerShell уже около 7 месяцев, но я мог бы помочь. Хотя я обычно использую метод Send-MailMessage -To -From и т. Д. (Вы пробовали метод?) Для отправки писем, я также использовал метод, который вы показываете.

От взгляда на ваш код и сравнения его с тем, что у меня есть, я отмечаю, что вам не хватает $attachment = New-Object System.Net.Mail.Attachment($emailAttach, $attachmentType). Я также вижу, что я сделал комментарий в своем сценарии, что вам нужно включить $message.Dispose() после того, как вы отправите электронное письмо, или будет заблокирована запись в соответствующем приложении.

Надеюсь, это поможет!

0

У меня была та же проблема. Для меня работает следующий двухстрочный лайнер и может быть запланирован. Изменение [email protected] и т.д., чтобы соответствовать вашей учетной записи и учетные данные:

$credentials = new-object Management.Automation.PSCredential “[email protected]”, (“gmail-user's password” | ConvertTo-SecureString -AsPlainText -Force) 

Send-MailMessage -From "[email protected]" -to "[email protected]" -Subject "Some subject" 
-Body "Some body" -SmtpServer "smtp.gmail.com" -port 587 -UseSsl 
-Credential $credentials -Attachments "C:\an-attachment.txt" 
Смежные вопросы