You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Send-MailMessage发送邮件时出现net_io_connectionclosed错误的求助

Send-MailMessage发送邮件时出现net_io_connectionclosed错误的求助

Hey,我看你遇到的问题挺典型的——同一个PowerShell邮件脚本在一台Server 2019上正常跑,换另一台同域的就报net_io_connectionclosed错误,对吧?结合你说的环境(都是AD域,SMTP是内部中继且其他客户端能用),我给你列几个可以排查的方向:

  • 先排查网络连通性
    先用这条命令测试出问题的服务器和SMTP中继服务器的25端口是否能正常连通:

    Test-NetConnection SMTP_Relay_Server -Port 25
    

    要是不通的话,大概率是服务器本地防火墙(比如Windows Defender防火墙的出站规则)或者网络层防火墙挡住了流量,对比一下两台服务器的防火墙配置差异;另外也可以看看两台服务器的代理设置是否一致,用netsh winhttp show proxy就能查看,要是有代理的话,确认另一台服务器的代理配置是否正确。

  • 检查SSL与端口的匹配问题
    你的脚本里设置了UseSsl = $true但用的是25端口,这其实有点不常规——一般SMTP的SSL端口是465(隐式SSL)或者587(STARTTLS),第一台服务器可能刚好兼容25端口走SSL,但另一台服务器或者SMTP中继可能不支持这种组合。可以先试试把UseSsl改成$false测试,或者把端口换成587再开启UseSsl,看能不能解决问题。

  • AD域内的中继权限验证
    有些内部SMTP中继服务器会限制允许中继的计算机账户,你可以检查下SMTP中继服务器的配置,看另一台Server 2019的计算机名是不是在允许中继的列表里;另外也可以试试在脚本里加上域账户凭证来发送,比如:

    $cred = Get-Credential domain\your-domain-account
    $MailMessage = @{
      To = "my_Email"
      From = "noreply@domain"
      Subject = "Testing SMTP from PowerShell - $local@domain"
      Body = "Testing sending mail via powershell for scripting."
      Smtpserver = "SMTP_Relay_Server"
      Port = 25
      UseSsl = $true
      Encoding = "UTF8"
      Priority = "High"
      Credential = $cred
    }
    Send-MailMessage @MailMessage
    

    用域账户身份发送,看看是不是计算机账户的权限问题导致连接被断开。

  • 查看日志找具体原因
    要是上面的方法都没解决,就去查日志:

    • 查看SMTP中继服务器的服务日志或者事件查看器里的应用日志,有没有拒绝该服务器连接的记录,里面会有更详细的拒绝原因;
    • 查看出问题的Server 2019的系统日志,找和WinSock、SMTP连接相关的错误事件,这些日志能帮你定位到底是网络层还是应用层的问题。

备注:内容来源于stack exchange,提问作者user3271408

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 08:34:38