Windows PowerShell调用Send-MailMessage时SMTP安全连接及认证报错求助
解决PowerShell Send-MailMessage的SMTP认证/安全连接错误
这个5.5.1 Authentication Required错误,本质是你的脚本没满足SMTP服务器的两个核心要求:安全加密连接和有效身份认证。下面是针对性的解决步骤,尤其适配你提到的类似Gmail这类主流邮箱场景:
核心修复操作
1. 强制启用SSL/TLS加密
现在几乎所有正规SMTP服务器都要求加密传输,所以必须在参数里加上-UseSsl,同时匹配正确的加密端口:
- 优先用587端口(TLS加密,是当前主流标准);部分老服务器可能支持465端口(SSL加密)
2. 传递合法的认证凭据
不能只填写发件人邮箱地址,必须明确提供登录凭据。建议用PSCredential对象安全存储密码:
# 替换为你的邮箱和密码(Gmail开了2FA的话,要用「应用专用密码」) $MyEmail = "your-email@gmail.com" $SecurePassword = ConvertTo-SecureString "your-app-password-or-regular-password" -AsPlainText -Force $EmailCredential = New-Object System.Management.Automation.PSCredential ($MyEmail, $SecurePassword)
3. 完整可运行的示例脚本
把参数整合到你的哈希表中,最终代码参考如下:
$MyEmail = "your-email@gmail.com" $SecurePassword = ConvertTo-SecureString "your-app-specific-password" -AsPlainText -Force $EmailCredential = New-Object System.Management.Automation.PSCredential ($MyEmail, $SecurePassword) $EmailSplat = @{ To = "recipient@example.com" From = $MyEmail Subject = "Test Email via PowerShell" Body = "这封邮件应该能正常发送,不会再触发认证错误了!" SmtpServer = "smtp.gmail.com" # 替换成你的SMTP服务器地址,比如Outlook用smtp.office365.com Port = 587 UseSsl = $true Credential = $EmailCredential } Send-MailMessage @EmailSplat
针对Gmail用户的额外提醒
如果你用的是Gmail邮箱,还需要注意两个关键点:
- 开启**两步验证(2FA)**的用户:绝对不能用普通登录密码,必须去Google账号管理页创建一个「应用专用密码」(专门给脚本/第三方应用使用的独立密码,和主密码无关)
- 未开启2FA的用户:可能需要在Google账号设置中开启「不太安全的应用访问」(不过这个功能已逐步淘汰,优先推荐使用应用专用密码)
其他排查方向
- 确认SMTP服务器地址是否正确:比如QQ邮箱用
smtp.qq.com,企业Exchange邮箱通常用smtp.office365.com - 检查账号是否因多次错误登录被临时锁定
- 企业邮箱用户可能需要联系管理员,确认是否开启了SMTP发送权限
内容的提问来源于stack exchange,提问作者user7777698
相关产品推荐
相关产品推荐

