web-dev-qa-db-fra.com

System.Net.Mail.SmtpException: le serveur SMTP nécessite une connexion sécurisée ou le client n'a pas été authentifié

J'essaie d'envoyer un e-mail avec l'adresse de mon site Web à partir d'une application C #.
Cela a bien fonctionné pendant plusieurs mois jusqu'à récemment. (peut-être que mon fournisseur change certaines choses ou que quelqu'un d'autre modifie les paramètres)

Voici le code:

  private void sendEmail(Email invite) {
            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient(smtpServerName);
            mail.From = new MailAddress(emailUsername);

            mail.To.Add(invite.RecipientEmail);
            mail.Subject = invite.MessageSubject;
            mail.Body = invite.MessageBody;

            SmtpServer.UseDefaultCredentials = false;
            SmtpServer.Port = 587;
            SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword);
//          SmtpServer.EnableSsl = true;
            SmtpServer.Send(mail);
        }  

Voici l'erreur:

Le serveur SMTP nécessite une connexion sécurisée ou le client n'a pas été authentifié. La réponse du serveur a été: l'authentification SMTP est requise.

En regardant d'autres questions, j'ai essayé ce qu'elles ont suggéré, pour faire SmtpServer.EnableSsl = true. Cela n'a pas fonctionné du tout. Il a donné ce qui suit:

System.Net.Mail.SmtpException: le serveur ne prend pas en charge les connexions sécurisées.

Je suppose que je devrais désactiver SSL et le faire comme avant.

Des suggestions sur la façon de faire fonctionner l'envoi d'e-mails à nouveau?

MODIFIER
J'ai essayé sans SmtpServer.UseDefaultCredentials = false;
J'ai essayé avec la valeur true: SmtpServer.UseDefaultCredentials =true;
J'ai essayé de commenter cette ligne avec la //SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword); suivante

15
Adrian

Ce message d'erreur est généralement provoqué par l'un des éléments suivants:

  • Paramètres de connexion incorrects, tels que le mauvais port spécifié pour la connexion sécurisée ou non sécurisée
  • Identifiants incorrects. Je vérifierais la combinaison nom d'utilisateur et mot de passe, pour m'assurer que les informations d'identification sont correctes.
7
Reed Copsey

Je pense que vous devez définir DeliveryMethod = SmtpDeliveryMethod.Network

celui-ci fonctionne actuellement sur mon PC, je viens de vérifier, je travaille bien, essayez ceci

using System.Net;
using System.Net.Mail;

var fromAddress = new MailAddress("[email protected]", "From Name");
var toAddress = new MailAddress("[email protected]", "To Name");
const string fromPassword = "fromPassword";
const string subject = "Subject";
const string body = "Body";

var smtp = new SmtpClient
           {
               Host = "smtp.gmail.com",
               Port = 587,
               EnableSsl = true,
               DeliveryMethod = SmtpDeliveryMethod.Network,
               UseDefaultCredentials = false,
               Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
           };
using (var message = new MailMessage(fromAddress, toAddress)
                     {
                         Subject = subject,
                         Body = body
                     })
{
    smtp.Send(message);
}
8
Ravindra Bagale

Si vous êtes sûr que votre nom d'utilisateur et votre mot de passe sont corrects, mais que vous obtenez toujours des erreurs, cela signifie que Gmail a bloqué votre application.

Vous devez cocher le bouton radio "Activer" dans le lien suivant correspondant à votre compte gmail . Cela fonctionnerait alors très bien.

2
Anitha Neelavathi