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

.NET SmtpClient因基础认证停用的迁移方案咨询

.NET应用邮件发送认证迁移问题

背景与问题

我有多个基于.NET Framework 4.8和.NET Core的应用(Web、控制台、API、类库),均使用SmtpClient发送邮件,代码示例如下:

SmtpClient smtp = new SmtpClient();
smtp.Host = smtpServer;
smtp.Port = smtpPort;
smtp.EnableSsl = smtpEnableSsl;
smtp.Credentials = new NetworkCredential(smtpUsername, smtpPassword);
...
MailMessage mail = new MailMessage();
...
smtp.Send(mail);

自2022年5月谷歌、2022年10月微软停用*基础认证(Basic Auth)*后,发送邮件时出现报错。我希望解决方案能兼容更多服务商,而非仅针对这两家。

调研的可选方案

目前我尝试替换现有实现,调研了以下方案:

微软OAuth2方案

  • EWS:较旧的SOAP协议,如Mailkit库所使用
  • Microsoft Graph

谷歌方案

  • 将账户密码(smtpPassword)替换为应用密码(App Password)
  • OAuth2:如Mailkit库所使用

付费组件

MailBee、Rebex等第三方付费组件

疑问与诉求

我认为当前迁移应选择微软Graph方案,且不采用谷歌的应用密码方案,这个思路是否正确?

我已调研过主流方案,但未找到足够信服的最优解。想了解:

  • 是否有开发者遇到过相同问题,以及可用的迁移工具?
  • 原SmtpClient是通用方案,现在是否需要针对每个服务商单独实现?

补充说明

经微软确认,SMTP AUTH的管控规则如下:

  • 若租户从未使用SMTP AUTH,微软已通过全局控制项SmtpClientAuthenticationDisabled主动禁用该协议;
  • 若租户正在使用SMTP AUTH,微软不会禁用该协议,默认认为租户有合理业务需求;
  • 若租户在被禁用后需重新使用SMTP AUTH,可通过Set-TransportConfig cmdlet将SmtpClientAuthenticationDisabled设为$False,但此操作会全局启用SMTP AUTH。建议通过邮箱级设置单独启用,仅允许需要的邮箱使用该协议。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:50:26