为什么发送-故障MAILMESSAGE使用STARTTLS在端口587送(Why does Send

2019-09-26 08:54发布

为什么从PowerShell中使用Send-命令MAILMESSAGE使用标志 - 端口587产生一个错误发送电子邮件。

命令:

Send-Mailmessage -smtpServer mail.server.com -Port 587 -from "admin@domain.com" -to "user@domain.com" -subject "Test" -body "Test"

错误信息:

发送-MAILMESSAGE:SMTP服务器要求安全连接或客户端未通过身份验证。 服务器响应为:5.7.0必须首先发出STARTTLS命令

PowerShell的文件说,将-UseSSL应指定一个STARTTLS命令来发送,但即使加上这个标志可能不会解决您的问题。

命令:

Send-Mailmessage -smtpServer mail.server.com -Port 587 -UseSsl -from "admin@domain.com" -to "user@domain.com" -subject "Test" -body "Test"

Eror消息:

发送-MAILMESSAGE:无法读取传输连接的数据:一个现有的连接被强行关闭远程主机。

Answer 1:

某些SMTP服务器可能已经被硬化为仅接受TLS 1.2协商STARTTLS。 在许多情况下,Windows配置默认指定-UseSSL时发送TLS 1.0。

要强制发送,以MAILMESSAGE使用TLS 1.2,必须执行发送-前MAILMESSAGE的行添加到该脚本:

无论是输入:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

要么

[System.Net.ServicePointManager]::SecurityProtocol = 'TLS12'


文章来源: Why does Send-MailMessage fail to send using STARTTLS over Port 587