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

.NET 9中如何处理使用自签名证书的本地SmtpServer?

.NET 9中允许SMTP连接自签名证书服务器的方法

在.NET 9里,ServicePointManager.ServerCertificateValidationCallback已被弃用,针对SMTP客户端连接自签名证书服务器的场景,无需再依赖全局的ServicePointManager,直接使用SmtpClient类新增的ServerCertificateValidationCallback属性即可完成配置。

代码示例

using System.Net;
using System.Net.Mail;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;

// 初始化SmtpClient
using var smtpClient = new SmtpClient("your-smtp-server-address", 587)
{
    EnableSsl = true,
    Credentials = new NetworkCredential("username", "password"),
    // 配置证书验证回调
    ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) =>
    {
        // 直接允许自签名证书(仅建议在本地测试/开发环境使用)
        return true;
        // 若需更安全的验证逻辑,可替换为自定义校验:
        // return sslPolicyErrors == SslPolicyErrors.None || IsTrustedSelfSignedCert(certificate);
    }
};

// 发送邮件示例
var mailMessage = new MailMessage("sender@example.com", "recipient@example.com")
{
    Subject = "Test Email",
    Body = "This is a test email sent via .NET 9 SmtpClient with self-signed cert."
};

smtpClient.Send(mailMessage);

注意事项

  • 直接返回true会跳过所有证书验证,仅适合本地开发或测试环境,生产环境建议配置可信证书,或在回调中添加自定义验证逻辑(比如校验证书的指纹、颁发者等),避免安全风险。
  • 如果你使用的是System.Net.Mail.SmtpClient之外的SMTP库,则需要参考对应库的证书验证配置方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 06:04:53