发送带附件的mailmessage

时间:2015-03-30 19:33:07

标签: task powershell-v2.0 scheduler

我有一个ps1脚本,可以在任务计划程序的事件中有条件地运行。触发我的脚本的事件是完成并写入“...已成功完成”到任务计划程序事件日志的另一个任务。发生这种情况时,我的脚本会向特定用户发送附带文件的HTML电子邮件(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 = "xyz@mycompany.com"
$Password = "xyz-password"
$to = "Automation@xxxxx.net"
$bcc = "testuser@xyz.net"
$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 <Automation@xyz.net>"
$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)

所以,当它手动运行时,它工作正常(带附件)......每次!! 当我将它设置为通过任务调度程序运行时它工作(发送电子邮件)但是没有附件!直到今天(!)

,它运行得很好

我根本不知道如何调试或测试...任何帮助都将非常感谢!!

谢谢!!! 乙 -

2 个答案:

答案 0 :(得分:0)

我自己比较新,现在只使用PowerShell大约7个月了,但我可以提供帮助。虽然我通常使用Send-MailMessage -To -From等(你试过this?)方法来发送电子邮件,但我也使用了你偶尔展示的方法。

从查看代码并将其与我的代码进行比较后,我注意到您遗漏了$attachment = New-Object System.Net.Mail.Attachment($emailAttach, $attachmentType)。我还看到我在我的脚本中发表了一条评论,您在发送电子邮件后需要包含$message.Dispose(),否则将会对相关附件进行写锁定。

希望这有帮助!

答案 1 :(得分:0)

我遇到了同样的问题。以下双线程为我工作,可以安排。更改gmail-user@gmail等以匹配您的帐户和凭据:

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

Send-MailMessage -From "gmail-user@gmail.com" -to "someone-else@gmail.com" -Subject "Some subject"
-Body "Some body" -SmtpServer "smtp.gmail.com" -port 587 -UseSsl
-Credential $credentials -Attachments "C:\an-attachment.txt"