簡體   English   中英

Powershell腳本無法使用Task Scheduler通過Outlook發送電子郵件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM