web-dev-qa-db-fra.com

La réponse du serveur était: 5.7.0 Doit d'abord émettre une commande STARTTLS. i16sm1806350pag.18 - gsmtp

J'essaie d'envoyer du courrier en utilisant gmail et j'obtiens une exception qui s'appelle 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. i16sm1806350pag.18 - gsmtp

le code que j'ai écrit pour envoyer du courrier est 

            MailMessage mail = new MailMessage(); 
            mail.To.Add(txtEmail.Text.Trim()); 
            mail.To.Add("[email protected]");
            mail.From = new MailAddress("[email protected]");
            mail.Subject = "Confirmation of Registration on Job Junction.";
            string Body = "Hi, this mail is to test sending mail using Gmail in ASP.NET";
            mail.Body = Body;
            mail.IsBodyHtml = true;
            SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
           // smtp.Host = "smtp.gmail.com"; //Or Your SMTP Server Address
            smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "password");
           // smtp.Port = 587;
            //Or your Smtp Email ID and Password
            smtp.UseDefaultCredentials = false;
          // smtp.EnableSsl = true;
            smtp.Send(mail);

S'il vous plaît dites-moi des solutions Je ne reçois aucune solution pour ces exceptions.

35
Ankur Gupta

Gmail nécessite une connexion sécurisée. Ceci peut être défini dans votre web.config comme ceci:

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

OU 

Le protocole SSL doit également être activé sur le serveur Web. 

Activation de SSL sur IIS 7.0

35
Microsoft DN

Étape (1):smtp.EnableSsl = true;

si pas assez:

Étape (2): "Accès aux applications moins sécurisées" doit être activé pour le compte Gmail utilisé par NetworkCredential à l'aide de la page des paramètres de google

20
musmahn

Cette question m'a hanté aussi du jour au lendemain. Voici comment y remédier:

  • Définissez l'hôte sur: smtp.gmail.com
  • Définir le port sur: 587

C'est le port TLS. J'avais utilisé tous les autres ports SMTP sans succès. Si vous définissez enableSsl = true comme ceci:

Dim SMTP As New SmtpClient(Host)
SMTP.EnableSsl = True

Coupez les champs nom d'utilisateur et mot de passe (un bon moyen de prévenir les erreurs si l'utilisateur entre l'email et le mot de passe lors de son enregistrement, comme le mien):

SMTP.Credentials = New System.Net.NetworkCredential(EmailFrom.Trim(), EmailFromPassword.Trim())

En utilisant le port TLS, votre SMTP sera traité comme un protocole SMTPS vous permettant de vous authentifier. J'ai immédiatement reçu un avertissement de Google indiquant que mon courrier électronique bloquait une application présentant des risques pour la sécurité ou obsolète. J'ai procédé à «Activer les applications moins sécurisées». Ensuite, j'ai mis à jour les informations concernant mon numéro de téléphone et Google m'a envoyé un code de vérification par SMS. Je suis entré et voila!

J'ai relancé l'application et elle a réussi. Je sais que ce fil est ancien, mais j'ai parcouru le réseau en lisant toutes les exceptions qu'il lançait et en ajoutant MsgBoxes après chaque ligne pour voir ce qui n'allait pas. Voici mon code de travail modifié pour la lisibilité car toutes mes variables proviennent de la base de données MySQL:

Try
    Dim MySubject As String = "Email Subject Line"
    Dim MyMessageBody As String = "This is the email body."
    Dim RecipientEmail As String = "[email protected]"
    Dim SenderEmail As String = "[email protected]"
    Dim SenderDisplayName As String = "FirstName LastName"
    Dim SenderEmailPassword As String = "SenderPassword4Gmail"

    Dim Host = "smtp.gmail.com"
    Dim PORT = "587" 'TLS Port

    Dim mail As New MailMessage
    mail.Subject = MySubject
    mail.Body = MyMessageBody
    mail.To.Add(RecipientEmail) 
    mail.From = New MailAddress(SenderEmail, SenderDisplayName)

    Dim SMTP As New SmtpClient(Host)
    SMTP.EnableSsl = True
    SMTP.Credentials = New System.Net.NetworkCredential(SenderEmail.Trim(), SenderEmailPassword.Trim())
    SMTP.DeliveryMethod = SmtpDeliveryMethod.Network 
    SMTP.Port = PORT
    SMTP.Send(mail)
    MsgBox("Sent Message To : " & RecipientEmail, MsgBoxStyle.Information, "Sent!")
Catch ex As Exception
    MsgBox(ex.ToString)
End Try

J'espère que ce code aidera l'OP, mais aussi que quelqu'un comme moi arrive en retard à la fête. Prendre plaisir.

6
DavidG

Logique du bouton SEND

        string fromaddr = "[email protected]";
        string toaddr = TextBox1.Text;//TO ADDRESS HERE
        string password = "YOUR PASSWROD";


        MailMessage msg = new MailMessage();
        msg.Subject = "Username &password";
        msg.From = new MailAddress(fromaddr);
        msg.Body = "Message BODY";
        msg.To.Add(new MailAddress(TextBox1.Text));
        SmtpClient smtp = new SmtpClient();
        smtp.Host = "smtp.gmail.com";
        smtp.Port = 587;
        smtp.UseDefaultCredentials = false;
        smtp.EnableSsl = true;
        NetworkCredential nc = new NetworkCredential(fromaddr,password);
        smtp.Credentials = nc;
        smtp.Send(msg);

-> ce code fonctionne à 100%, si votre système contient un anti-virus et un pare-feu logiciel anti-virus Limitez l'envoi de messages depuis notre système. Après cela, lancez ce code .... Dans le code ci-dessus, le contrôle TextBox1.Text est utilisé pour TOaddress.

4
khanna

Si vous obtenez l'erreur "Attribut non reconnu 'enableSsl'" en suivant le conseil d'ajouter ce paramètre à votre web.config. J'ai trouvé que j'étais capable de contourner l'erreur en l'ajoutant à mon fichier de code à la place dans ce format:

SmtpClient smtp = new SmtpClient();
smtp.EnableSsl = true;

try
{
    smtp.Send(mm);
}
catch (Exception ex)
{
    MsgBox("Message not emailed: " + ex.ToString());
}

Voici la section system.net de mon web.config:

<system.net>
  <mailSettings>
    <smtp from="<from_email>">
      <network Host="smtp.gmail.com"
       port="587"
       userName="<your_email>"
       password="<your_app_password>" />
    </smtp>
  </mailSettings>
</system.net>
2
R Porter

Si vous transmettez (comme moi) tous les paramètres tels que port, nom d'utilisateur, mot de passe via un système et que vous n'êtes pas autorisé à modifier le code, vous pouvez le faire facilement sur le fichier web.config

  <system.net>
    <mailSettings>
      <smtp>
        <network enableSsl="true"/>
      </smtp>
    </mailSettings>
   </system.net>
2
Ernest

" https://www.google.com/settings/security/lesssecureapps " utilisez ce lien après avoir ouvert une session sur votre compte gmail et cliqué sur allumer. Ensuite, lancez votre application, elle fonctionnera sûrement.

2
k3ka

J'ai aussi eu la même erreur en utilisant le code:

 MailMessage mail = new MailMessage(); 
        mail.To.Add(txtEmail.Text.Trim()); 
        mail.To.Add("[email protected]");
        mail.From = new MailAddress("[email protected]");
        mail.Subject = "Confirmation of Registration on Job Junction.";
        string Body = "Hi, this mail is to test sending mail using Gmail in ASP.NET";
        mail.Body = Body;
        mail.IsBodyHtml = true;
        SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
       // smtp.Host = "smtp.gmail.com"; //Or Your SMTP Server Address
        smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "password");
       // smtp.Port = 587;
        //Or your Smtp Email ID and Password
        smtp.UseDefaultCredentials = false;
      // smtp.EnableSsl = true;
        smtp.Send(mail);

Mais déplacer 2 lignes vers le haut a résolu le problème:

        MailMessage mail = new MailMessage(); 
        mail.To.Add(txtEmail.Text.Trim()); 
        mail.To.Add("[email protected]");
        mail.From = new MailAddress("[email protected]");
        mail.Subject = "Confirmation of Registration on Job Junction.";
        string Body = "Hi, this mail is to test sending mail using Gmail in ASP.NET";
        mail.Body = Body;
        mail.IsBodyHtml = true;
        SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
       // smtp.Host = "smtp.gmail.com"; //Or Your SMTP Server Address
        smtp.UseDefaultCredentials = false;
      smtp.EnableSsl = true;
        smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "password");
       // smtp.Port = 587;
        //Or your Smtp Email ID and Password
        smtp.Send(mail);
0
user1400290