我正試圖使用PowerShell將電子郵件發送到Exchange服務器。我的目標是使用普通的舊SMTP將消息傳遞給Exchange服務器上的本地用戶(郵箱)。 Exchange服務器位於與發送服務器相同的網絡和AD域中,並且與登錄的發送用戶位於同一個網絡和AD域中。PowerShell發送沒有(默認)身份驗證的SMTP電子郵件
但是,我發送的用戶無權訪問該Exchange服務器上的電子郵件。 PowerShell似乎默認使用已登錄的用戶憑據發送身份驗證。
$smtp = new-object Net.Mail.SmtpClient("exchangeserver.mylan") $smtp.Send($emailFrom, $emailTo, $subject, $message)
我曾嘗試$smtp.Send(...
線沒有成功之前添加$smtp.UseDefaultCredentials = $false
。
一個解決方案是允許此用戶在Exchange服務器上發送郵件。但是,用戶將根據運行此腳本的服務而改變,所以我不想這樣解決。
另一種解決方案是使用類似$smtp.Credentials = New-Object System.Net.NetworkCredential("DOMAIN\user", "password")
的硬編碼憑證(也在$smtp.Send(...
行之前)。我也沒有運氣。
我真的很喜歡的解決方案是隻使用良好的舊auth免費SMTP在PowerShell中發送電子郵件。
您運行的是哪個版本的Exchange?該腳本是否可以從Exchange服務器上運行? – mjolinor
不知道什麼Exchange版本正在運行(並且不應該是相關的)。腳本無法從Exchange服務器運行。高安全性的環境,除了讓它工作,幾乎沒有什麼可做的。 :) –
Exchange服務器默認情況下不會執行匿名中繼(至少從5.5開始)。如果您希望使用接收連接器進行匿名中繼,則必須在服務器上進行修復。如果腳本在Exchange服務器上運行,則可以使用localhost,繞過接收連接器權限。 – mjolinor