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

ASP.NET WebForms部署IIS后用SendGrid发邮件遇证书异常

解决SendGrid邮件发送SSL证书验证失败问题

方法1:补全服务器证书链

生产环境IIS服务器可能缺少SendGrid SSL证书对应的根证书或中间证书,本地机器因系统/浏览器自动更新了证书链所以能正常验证。

  • 操作步骤:
    1. 用浏览器访问https://api.sendgrid.com,查看证书详情并导出完整证书链(包含根证书和中间证书)。
    2. 在IIS服务器的本地计算机证书存储中,将证书分别导入「受信任的根证书颁发机构」和「中级证书颁发机构」目录。
    3. 重启IIS服务后重新测试。

方法2:临时跳过证书验证(仅应急使用)

此方法会降低安全性,仅作为临时恢复方案:

  • 在初始化SendGrid客户端前添加证书验证回调:
// 临时禁用证书验证,生产环境排查完成后务必移除
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

var client = new SendGridClient(apiKey);
var msg = MailHelper.CreateSingleEmailToMultipleRecipients(from, toList, subject, plainTextContent, htmlContent, true);
var response = await client.SendEmailAsync(msg).ConfigureAwait(false);

方法3:启用兼容的TLS版本

SendGrid要求使用TLS 1.2及以上版本,部分老旧IIS服务器可能默认禁用高版本TLS:

  • 操作步骤:
    1. 在IIS管理器中,进入网站的「SSL设置」,确认TLS版本设置为1.2或1.3。
    2. 也可通过注册表强制启用TLS 1.2:
      • 打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
      • 新建「TLS 1.2」项,再在其下新建「Client」项,添加两个DWORD值:DisabledByDefault设为0,Enabled设为1。
      • 重启服务器生效。

方法4:升级SendGrid SDK版本

旧版本的SendGrid .NET SDK可能存在SSL握手兼容性问题,在NuGet包管理器中更新SendGrid包到最新稳定版后重新部署测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 07:40:04