Maison >développement back-end >C++ >Pourquoi est-ce que je reçois une erreur « Le certificat distant n'est pas valide » lors de l'envoi d'e-mails via le serveur SMTP de Gmail en C# ?

Pourquoi est-ce que je reçois une erreur « Le certificat distant n'est pas valide » lors de l'envoi d'e-mails via le serveur SMTP de Gmail en C# ?

DDD
DDDoriginal
2025-01-12 08:15:42707parcourir

Why Am I Getting a

Dépannage de l'erreur « Le certificat à distance n'est pas valide » dans Gmail SMTP

Votre application C# peut ne pas réussir à envoyer des e-mails via le serveur SMTP de Gmail, affichant l'erreur : "Le certificat distant n'est pas valide selon la procédure de validation." Cela se produit lorsque la connexion sécurisée (TLS/SSL) de votre application ne peut pas vérifier le certificat de Gmail.

Correction temporaire (non recommandée pour la production) :

Une solution rapide, mais très peu sécurisée, consiste à désactiver temporairement la validation du certificat. Utilisez-le UNIQUEMENT pour les tests et le débogage. Ne déployez jamais ceci dans un environnement de production.

<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>

Solution sécurisée :

L'approche appropriée consiste à vérifier le certificat SMTP de Gmail. Assurez-vous que le certificat est :

  • Valide : Non expiré.
  • De confiance : Signé par une autorité de certification (CA) de confiance.
  • Correct : Appartient au domaine attendu (par exemple, smtp.gmail.com).

Comprendre la Stack Trace :

La trace de pile (non fournie dans cette réponse révisée, car elle n'était pas incluse dans la sortie de l'invite) détaille les appels de méthode menant à l'erreur. Un échec au niveau de CheckCompletionBeforeNextReceive indique généralement un problème de validation ou de cryptage du certificat lors de la négociation SSL/TLS. L'analyse de la trace de la pile permet d'identifier l'emplacement exact de l'échec dans votre code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn