[英]Powershell Script not able to send email via Outlook using Task Scheduler
我有一個腳本,該腳本正在從遠程計算機獲取最新的事件日志。 通過Outlook將事件日志詳細信息發送給特定人群。 該腳本可以在Powershell ISE上正常運行,但不能使用任務計划程序發送電子郵件。 任何幫助,將不勝感激。 謝謝
腳本如下:
$Recipients="xyz@outlook.com","abc@outlook.com"
Foreach ($name in $Recipients) {
$Outlook = New-Object -ComObject Outlook.Application
$Mail = $Outlook.CreateItem(0)
$Mail.Recipients.Add($name)
$Mail.Subject ="Testing"
$Mail.Body ="Demo"
Write-Host "Sending Email"
$Mail.Send()
}
Task Scheduler作為服務運行-服務中不能使用Office應用程序(包括Outlook)。
Microsoft當前不建議也不支持任何無人參與的非交互客戶端應用程序或組件(包括ASP,ASP.NET,DCOM和NT Services)中的Microsoft Office應用程序自動化,因為Office可能表現出不穩定的行為和/在此環境中運行Office時出現死鎖或死鎖。
如果要構建在服務器端上下文中運行的解決方案,則應嘗試使用對無人值守執行安全的組件。 或者,您應該嘗試找到允許至少部分代碼在客戶端運行的替代方法。 如果您從服務器端解決方案中使用Office應用程序,則該應用程序將缺少許多成功運行所需的功能。 此外,您將承擔整體解決方案穩定性的風險。 在《 服務器端Office自動化注意事項》一文中了解有關此內容的更多信息。
$From = "YourEmail@gmail.com"
$To = "AnotherEmail@YourDomain.com"
$Cc = "YourBoss@YourDomain.com"
$Attachment = "C:\temp\Some random file.txt"
$Subject = "Email Subject"
$Body = "Insert body text here"
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
Send-MailMessage -From $From -to $To -Cc $Cc -Subject $Subject `
-Body $Body -SmtpServer $SMTPServer -port $SMTPPort -UseSsl `
-Credential (Get-Credential) -Attachments $Attachment
您也可以考慮使用EWS,請參閱Exchange中的EWS托管API,EWS和Web服務以獲取更多信息。
您應該只使用Send-MailMessage,而不要為此使用Outlook COM對象。 這樣,您就不必依賴郵件配置文件和其他設置(需要在Outlook中用於運行任務的用戶下進行設置)。 我還在代碼中看到了一些奇怪的東西:為每個收件人創建一個新的COM Outlook COM對象,然后嘗試發送郵件:移動For循環以觸發創建Outlook COM對象之后看起來更合乎邏輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.