首页 >后端开发 >C++ >为什么在 C# 中通过 Gmail 的 SMTP 服务器发送电子邮件时出现'远程证书无效”错误?

为什么在 C# 中通过 Gmail 的 SMTP 服务器发送电子邮件时出现'远程证书无效”错误?

DDD
DDD原创
2025-01-12 08:15:42707浏览

Why Am I Getting a

对 Gmail SMTP 中的“远程证书无效”错误进行故障排除

您的 C# 应用程序可能无法通过 Gmail 的 SMTP 服务器发送电子邮件,并显示错误:“根据验证过程,远程证书无效。”当您的应用程序的安全连接 (TLS/SSL) 无法验证 Gmail 的证书时,就会发生这种情况。

临时修复(不建议用于生产):

一个快速但高度不安全的解决方案是暂时禁用证书验证。 仅将此用于测试和调试。切勿将其部署到生产环境。

<code class="language-csharp">[Obsolete("Do not use this in Production code!!!", true)]
static void DisableCertificateValidation() //Renamed for clarity
{
    // Disabling certificate validation exposes your application to man-in-the-middle attacks.
    // Your encrypted messages could be intercepted and read.
    // See: https://stackoverflow.com/a/14907718/740639
    ServicePointManager.ServerCertificateValidationCallback =
        (s, certificate, chain, sslPolicyErrors) => true;
}</code>

安全解决方案:

正确的方法是验证 Gmail 的 SMTP 证书。 确保证书是:

  • 有效期:未过期。
  • 可信:由受信任的证书颁发机构 (CA) 签名。
  • 正确: 属于预期域(例如,smtp.gmail.com)。

理解堆栈跟踪:

堆栈跟踪(在此修订后的响应中未提供,因为它未包含在提示的输出中)详细说明了导致错误的方法调用。 CheckCompletionBeforeNextReceive 处的失败通常表示 SSL/TLS 握手期间证书验证或加密存在问题。 分析堆栈跟踪有助于查明代码中失败的确切位置。

以上是为什么在 C# 中通过 Gmail 的 SMTP 服务器发送电子邮件时出现'远程证书无效”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn