l'authentification ou le décryptage a échoué lors de l'envoi de messages à GMail en utilisant SSL
Je fais référence à ce guide sur les C# SMTP mail.
Voici mon code:
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("[email protected]");
mail.To.Add("[email protected]");
mail.Subject = "Test Mail";
mail.Body = "This is for testing SMTP mail from GMAIL";
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential("MyUserNameInGmail", "MyGmailPassWord");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
Malheureusement, il y a une exception concernant le protocole SSL et je ne peux pas résoudre le problème:
Exception Non Gérée:
Système.Net.Mail.SmtpException: Message
n'a pas pu être envoyé. --->
Système.IO.IOException: L'
l'authentification ou le déchiffrement a
a échoué. --->
Système.InvalidOperationException: SSL
erreur d'authentification:
RemoteCertificateNotAvailable,
RemoteCertificateChainErrors à
Système.Net.Mail.SmtpClient.m__4
(Le système.Object sender,
Système.De sécurité.La cryptographie.X509Certificates.X509Certificate
certificat,
Système.De sécurité.La cryptographie.X509Certificates.X509Chain
la chaîne, SslPolicyErrors
sslPolicyErrors) [0x00000]
:0 à
Système.Net.De sécurité.SslStream+c__AnonStorey7.<>m__
(Le système.De sécurité.La cryptographie.X509Certificates.X509Certificate
cert, Système.Int32[] certErrors)
[0x00000]: 0
au
Mono.De sécurité.Le protocole.Tls.SslClientStream.OnRemoteCertificateValidation
(Le système.De sécurité.La cryptographie.X509Certificates.X509Certificate
certificat du Système.Int32 [erreurs])
[0x00000]: 0
au
Mono.De sécurité.Le protocole.Tls.SslStreamBase.RaiseRemoteCertificateValidation
(Le système.De sécurité.La cryptographie.X509Certificates.X509Certificate
certificat du Système.Int32 [erreurs])
[0x00000]: 0
au
Mono.De sécurité.Le protocole.Tls.SslClientStream.RaiseServerCertificateValidation
(Le système.De sécurité.La cryptographie.X509Certificates.X509Certificate
certificat du Système.Int32[]
certificateErrors) [0x00000]
:0 à
Mono.De sécurité.Le protocole.Tls.Poignée de main.Client.TlsServerCertificate.validateCertificates
(Mono.De sécurité.X509.X509CertificateCollection
certificats) [0x00000]: 0 à
Mono.De sécurité.Le protocole.Tls.Poignée de main.Client.TlsServerCertificate.ProcessAsTls1
() [0x00000]: 0
au
Mono.De sécurité.Le protocole.Tls.Poignée de main.HandshakeMessage.Processus
() [0x00000]: 0
(wrapper
remoting-invoke-avec-check)
Mono.De sécurité.Le protocole.Tls.Poignée de main.HandshakeMessage:Processus
() à
Mono.De sécurité.Le protocole.Tls.ClientRecordProtocol.ProcessHandshakeMessage
(Mono.De sécurité.Le protocole.Tls.TlsStream
handMsg) [0x00000]: 0 à
Mono.De sécurité.Le protocole.Tls.RecordProtocol.InternalReceiveRecordCallback
(IAsyncResult asyncResult) [0x00000]
dans :0 --- Fin de
intérieure trace de pile d'exception --- à
Mono.De sécurité.Le protocole.Tls.SslStreamBase.AsyncHandshakeCallback
(IAsyncResult asyncResult) [0x00000]
dans :0 --- Fin de
intérieure trace de pile d'exception --- à
Système.Net.Mail.SmtpClient.Envoyer
(Le système.Net.Mail.MailMessage message)
[0x00000]: 0
au csharpdungeon.MainClass.Main ()
[0x00000]: 0
source d'informationauteur David Stockinger
Vous devez vous connecter pour publier un commentaire.
La bonne solution n'est pas de supprimer le Certificat SSL de Validation. GMail dispose d'un certificat valide. Le problème est que Mono n'arrive pas à trouver le certificat.
Ce qui est totalement faux, pour de nombreuses raisons, mais principalement parce qu'il supprime un élément très important de la validation de certificat:
La bonne solution est d'installer le certificat sur votre machine:
Cela aura pour effet de télécharger le certificat pour gmail et il sera disponible pour les mono à utiliser.
Vérifier si le code ci-dessous serait travailler pour vous; je l'ai testé sur mon compte gmail et il semble bien fonctionner avec mon mono 2.0 en cours d'exécution sur ubuntu 10.04 LTS
solution est pris de ici
espère que cette aide, en ce qui concerne
Vous n'avez pas les autorités de certification installé dans un endroit où la Mono peuvent les voir. Jetez un oeil à le projet Mono FAQ sur la sécurité des mesures pour remédier à cette erreur.
Si vous utilisez SSL, plutôt que de TLS, vous devez le port 465 plutôt que de 587.
Voir http://mail.google.com/support/bin/answer.py?hl=en&reponse=13287.
Avez-vous essayé de changer de port, je sais que le SMTP par défaut numéro de port SSL est 465
Trouvé une autre solution de SmtpClient avec Gmail
Si vous exécutez mono serveur web, exécutez la commande avec le même nom d'utilisateur mono processus.
Avez-vous besoin d'envoyer de manière sécurisée avec SSL? Vous pouvez supprimer cette déclaration
SmtpServer.EnableSsl = true;
qui ne nécessiterait pas le SSL cert.