# This works, it works fine when not in a function
$emailFrom = "[email protected]"
$emailTo = "[email protected]"
$emailSubject = "Report"
$emailBody = "Daily Report Attached"
$SMTPAuthUsername = "[email protected]"
$SMTPAuthPasswrd = "strongpass"
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$mailmessage = New-Object System.Net.Mail.MailMessage
$mailmessage.from = ($emailFrom)
$mailmessage.To.add($emailTo)
$mailmessage.Subject = $emailSubject
$mailmessage.Body = $emailBody
$SMTPClient = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort)
$SMTPClient.UseDefaultCredentials = $false
$SMTPClient.EnableSSL = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($SMTPAuthUsername, $SMTPAuthPasswrd)
$SMTPClient.Send($mailmessage)
# This does not work
$emailFrom = "[email protected]"
$emailTo = "[email protected]"
$emailSubject = "Report"
$emailBody = "Daily Report Attached"
$SMTPAuthUsername = "[email protected]"
$SMTPAuthPasswrd = "strongpass"
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
function Send-Email {
param (
[Parameter(Mandatory=$true)][string]$emailFrom,
[Parameter(Mandatory=$true)][string]$emailTo,
[Parameter(Mandatory=$true)][string]$emailSubject,
[Parameter(Mandatory=$true)][string]$emailBody,
[Parameter(Mandatory=$true)][string]$SMTPAuthUsername,
[Parameter(Mandatory=$true)][string]$SMTPAuthPasswrd,
[Parameter(Mandatory=$true)][string]$SMTPServer,
[Parameter(Mandatory=$true)][string]$SMTPPort
)
$mailmessage = New-Object System.Net.Mail.MailMessage
$mailmessage.from = ($emailFrom)
$mailmessage.To.add($emailTo)
$mailmessage.Subject = $emailSubject
$mailmessage.Body = $emailBody
$SMTPClient = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort)
$SMTPClient.UseDefaultCredentials = $false
$SMTPClient.EnableSSL = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($SMTPAuthUsername, $SMTPAuthPasswrd)
$SMTPClient.Send($mailmessage)
}
Send-Email -emailFrom $emailFrom `
-emailTo $emailTo `
-emailSubject $emailSubject `
-emailBody $emailBody `
-SMTPAuthUsername $SMTPAuthUsername `
-SMTPAuthPasswrd $SMTPServer `
-SMTPServer $SMTPServer `
-SMTPPort $SMTPPort
當我使用函式運行它時,出現以下錯誤:
使用“1”引數呼叫“發送”的例外:“SMTP 服務器需要安全連接或客戶端未通過身份驗證。服務器回應為:5.7.0 需要身份驗證。了解更多資訊”。86 號線
第 86 行是 $SMTPClient.Send($mailmessage)。我收到了這個作業訊息,但用 TLS 條目修復了它。
uj5u.com熱心網友回復:
您將錯誤的引數傳遞給函式。
線
-SMTPAuthPasswrd $SMTPServer `
應該
-SMTPAuthPasswrd $SMTPAuthPasswrd `
正如我在評論中指出的那樣,錯誤是您傳遞了錯誤的憑據。
請參閱https://stackoverflow.com/a/26709761/8473136中的案例 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/516112.html
標籤:电源外壳电子邮件
