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.
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.
É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 :
Cette question m'a hanté aussi du jour au lendemain. Voici comment y remédier:
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.
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.
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>
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>
" 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.
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);