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

VB.net 3.5升级至4.8后SMTP服务器连接异常问题咨询

问题根因
  • 安全协议未显式指定:.NET Framework 4.6及以上版本虽然原生支持TLS 1.2,但默认的ServicePointManager.SecurityProtocol配置如果没有显式设置,部分场景下仍然会优先尝试旧的TLS 1.0/1.1协议,被Office 365 SMTP服务拒绝后直接断开连接,和你看到的「远程方已关闭传输流」报错完全吻合。
  • 你猜测的EnableSsl()调用问题是误解:端口587下EnableSsl=True是要求使用STARTTLS机制升级到加密连接,不会强制使用旧的SSL协议,这行配置的逻辑本身是正确的,仅需要注意EnableSsl是属性不是方法,调用时不需要加括号,写成smtp.EnableSsl = True即可。
  • 额外注意:当前Office 365已经逐步停用传统的账号密码身份验证,如果你使用的账号已经启用多因素认证,也可能触发验证失败,但本次报错的直接原因是TLS协议协商失败。
解决方案

1. 显式指定安全协议

在初始化SmtpClient之前,添加如下代码,强制使用TLS 1.2及以上版本进行协商:

' 优先使用TLS 1.3,系统不支持则回退到TLS 1.2
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls13 Or SecurityProtocolType.Tls12
' 如果你的服务器系统不支持TLS 1.3(比如Windows Server 2012及以下),可以仅保留TLS 1.2配置
' ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

这行代码建议放在程序启动阶段,或者至少放在创建SmtpClient实例、执行发送逻辑之前,确保所有出站请求都使用指定的安全协议。

2. 验证基础配置

设置完TLS协议后如果仍然报错,检查以下配置是否符合要求:

  • Office 365 SMTP的官方服务器地址为smtp.office365.com,确认你的Session("SMTPClient")存储的地址正确
  • 如果账号已启用多因素认证,需要使用应用密码替代普通账号密码,或切换到OAuth2.0身份验证方式

3. 系统层面TLS配置校验(可选)

如果代码修改后仍然无效,检查服务器系统的TLS配置:

  • Windows Server 2012及以上版本默认启用TLS 1.2,更低版本需要手动修改注册表启用TLS 1.2支持
  • 确认系统没有通过组策略强制禁用TLS 1.2/1.3
修改后完整代码示例
' 先指定安全协议
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 Or SecurityProtocolType.Tls13

Dim smtp As New SmtpClient(Session("SMTPClient"))
smtp.Port = 587
mail.From = New MailAddress("email@company.com")
mail.To.Add("email@company.com")
mail.ReplyTo = New MailAddress("email@company.com")
smtp.UseDefaultCredentials = False
smtp.Credentials = New System.Net.NetworkCredential("user", "password", "domain")
smtp.EnableSsl = True

If Session("sent") = 0 Then
    Try
        smtp.Send(mail)
    Catch ex As SmtpException
        Response.Write(ex)
    End Try
    Session("sent") = 1
End If

内容的提问来源于stack exchange,提问作者RCDAWebmaster

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:06:07