gpt4 book ai didi

powershell - 为什么 Send-MailMessage 无法通过端口 587 使用 STARTTLS 发送

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:07 66 4
gpt4 key购买 nike

为什么使用标志 -Port 587 的 Send-MailMessage 命令从 PowerShell 发送电子邮件会产生错误。

命令:

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

错误信息:

Send-Mailmessage : The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first

PowerShell 文档说添加 -UseSSL 应该指定发送 STARTTLS 命令,但即使添加此标志也可能无法解决您的问题。

命令:

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

错误信息:

Send-Mailmessage : Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.

最佳答案

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

要强制 Send-MailMessage 使用 TLS 1.2,必须在执行 Send-MailMessage 之前在脚本中添加一行:

要么输入:

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

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

关于powershell - 为什么 Send-MailMessage 无法通过端口 587 使用 STARTTLS 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53785662/

66 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com