使用“1”参数调用“发送”的exception:“根据validation过程,远程证书无效。PowerShell

我试图设置一个电子邮件PowerShell脚本,让我发送任务计划程序运行脚本时的电子邮件。 我得到的问题是:

Exception calling "Send" with "1" argument(s): "The remote certificate is invalid according to the validation procedure." 

我正在运行以下代码:

 $SMTPClient = New-Object Net.Mail.SmtpClient("SMTP", PORT) $SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "password") $MailMessage = (New-Object system.net.mail.mailmessage) $MailMessage.from = ("FROM") $MailMessage.To.Add("TO") $MailMessage.Subject = ("Subject") $MailMessage.Body = ("Body") $Smtpclient.EnableSsl = ($true) $SmtpClient.Timeout = (300000) $SmtpClient.Send($MailMessage) Write-Output "Message sent"; 

它给了我上面指定的错误。 我正在Windows Server 2012 R2上运行此代码,并且此代码在正常的Windows 10,8和7上工作,但不能在服务器上运行。 请有人给我一个快速和简单的解决scheme。 在这个发展阶段,安全性确实不是问题,所以任何解决scheme都是值得欢迎的。 谢谢

经过多方研究,找到并确认后才发现。 答案是在发送命令之前添加:

 [System.Net.ServicePointManager]::serverCertificateValidationCallback = { return $true } 

感谢您的帮助Avshalom和Alexander Obersht

这仍然不能解决您的证书有问题,也许与主机不匹配,过期的证书或中间证书。 在调用“发送”之前,通过将上面的类添加到您的脚本中,您将禁用证书验证,只有在您不需要解决证书问题时,这是一种解决方法。