web-dev-qa-db-fra.com

Le serveur SMTP nécessite une connexion sécurisée ou le client n'a pas été authentifié

Je reçois cette erreur

The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first. e17sm974159fak.34

Web.config

<mailSettings>
    <smtp deliveryMethod="Network"
                from="[email protected]">
        <network defaultCredentials="false" Host="smtp.gmail.com" port="587"
                    userName="[email protected]"  password="12345678" />
    </smtp>        
</mailSettings>

Fichier de code

public void Submit()
        {
            EnsureCurrentlyValid();
            // Send via email
            var message = new StringBuilder();
            message.AppendFormat("Date: {0:yyyy-MM-dd hh:mm}\n", DateTime.Now);
            message.AppendFormat("Email from: {0}\n", Name);
            message.AppendFormat("Email: {0}\n", Email);
            message.AppendFormat("Message: {0}\n", Message);
            SmtpClient smtpClient = new SmtpClient();
            MailMessage m = new MailMessage(
                "[email protected]", // From
                "[email protected]", // To
                "Suggestion/Comments", // Subject
                message.ToString()); // Body

            smtpClient.Send(m);
        }
30
coure2011

Essayez de définir la propriété EnableSsl sur true:

smtpClient.EnableSsl = true;

Autant que je sache, cette propriété ne peut être définie que dans le code et ne peut pas être spécifiée dans le fichier de configuration.

49
Darin Dimitrov

En fait, vous pouvez gérer cela dans votre fichier web.config en ajoutant enableSsl = "true". Cela a fonctionné pour moi et je n'ai rien eu à faire dans le code.

par exemple. 

<network Host="smtp.gmail.com" enableSsl="true" ... />
21
Michael

Cela a fonctionné pour moi:

  1. Besoin d'activer "Accès pour les applications moins sécurisées" sur le compte Google (De Email).
  2. Définissez smtpclient.UseDefaultCredentials = false;
  3. Définissez smtpclient.EnableSsl = true;

        MailMessage mail = new MailMessage("FromEmail_Address", "ToEmail_Address");
        SmtpClient smtpclient = new SmtpClient();
        smtpclient.Port = 587;
        smtpclient.DeliveryMethod = SmtpDeliveryMethod.Network;
        smtpclient.UseDefaultCredentials = false;
        smtpclient.Host = "smtp.gmail.com";
        smtpclient.UseDefaultCredentials = false;
        mail.Subject = "Email Subject";
        mail.Body = "Content of the email";
        smtpclient.EnableSsl = true;
        smtpclient.Credentials = new System.Net.NetworkCredential()
        {
            UserName = "FromEmail_Address",
            Password = "password of the email"
        };
        client.Send(mail);
    
0
Samyuktha Akula