Je n'arrive pas à comprendre pourquoi je ne travaille pas
SmtpClient smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
UseDefaultCredentials = false,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential("[email protected]", "myGmailPasswordHere"),
EnableSsl = true,
Timeout = 10000
};
smtp.Send(mail);
Je reçois:
Le serveur SMTP nécessite une connexion sécurisée ou le client n'a pas été authentifié. La réponse du serveur était la suivante: 5.5.1 Authentification requise.
Je viens de spécifier EnableSsl sur true, ce qui ne devrait pas poser problème en termes de connexion sécurisée.
Je cours ceci de localhost. Et oui, mon nom d'utilisateur et mon mot de passe que je saisis pour authentifier (les informations d'identification de mon compte Gmail) sont corrects à 100%.
Je sais que c'est un sujet ancien, MAIS ... Google a modifié quelque chose dans ses paramètres de sécurité.
J'étais aux prises avec toutes les réponses jusqu'à ce que je vérifie mon courrier électronique avec un courrier de Google indiquant que "nous avons récemment bloqué une tentative de connexion sur votre compte Google".
Cela m’a conduit à cette page: Sécurité du compte Google
Dans la section "Accès aux applications moins sécurisées", vous pouvez activer l'accès à votre compte à partir d'autres appareils/applications ... comme votre application C #.
Notez qu'il n'y a plus de section "spécifique à l'application".
J'espère que cela aide quelqu'un ... Je viens de perdre 30 minutes de ma vie ...
Si les informations de connexion sont correctes à 100%, vous devez définir UseDefaultCredentials = false
first, puis définir les informations d'identification que vous souhaitez utiliser Credentials = new NetworkCredential("[email protected]", "myGmailPasswordHere")
.
Si vous définissez d'abord les informations d'identification, lorsque vous définissez UseDefaultCredentials = false
, la propriété Credentials
devient null
.
C'est câblé, mais ça m'est arrivé.
Déboguez votre code et vérifiez si la propriété Credentials
est null avant d'appeler smtp.Send(message);
. Si c'est le cas, essayez d'inverser l'ordre. Il semble que vous l'avez dans le bon ordre, mais s'il est nul, n'utilisez pas l'initialisation en ligne.
J'espère que ça aide.
EDIT: Si vous utilisez la vérification en deux étapes, assurez-vous que vous utilisez un Mot de passe spécifique à l'application
Il semble que Gmail nécessite un mot de passe spécifique à l'application (pas votre mot de passe principal).
Veuillez examiner ceci: http://support.google.com/mail/bin/answer.py?hl=fr&answer=1173270
J'ai eu le même problème récemment.
J'ai déjà eu ce problème et je l'ai corrigé en procédant comme suit:
Je viens de désactiver cette option et mon code a fonctionné avec succès.
Cela a bien fonctionné pour moi
SmtpClient smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
UseDefaultCredentials = false,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential("[email protected]", "mypassword"),
EnableSsl = true,
Timeout = 10000
};
MailMessage message = new MailMessage();
message.Body = "hello there";
message.Subject = "hi!!";
message.To.Add("[email protected]");
message.From = new MailAddress("[email protected]");
smtp.Send(message);
Pour moi, la solution nécessitait 2 "étapes":
UseDefaultCredentials = false
, puis définissez les informations d'identification que je souhaite utiliser Credentials = new NetworkCredential("[email protected]", "myGmailPasswordHere")
. Définir d'abord les informations d'identification, lorsque je définirai UseDefaultCredentials = false
rendra la propriété Credentials null
.<mailSettings>
<smtp from="[email protected]">
<network Host="smtp.gmail.com" password="yourpassword" port="587" userName="username"/>
</smtp>
</mailSettings>
Edit: essayez d'ajouter cette ligne smtp.Credentials = Credentials
après cela
Credentials = new NetworkCredential("[email protected]", "myGmailPasswordHere"),
Très simple il suffit de suivre ceci pour C # WPF Application:
private void SendByGmail(string subject, string body, string recepientEmail, string MailMsgFrom, string MailMsgPass)
{
using (MailMessage mailMessage = new MailMessage())
{
mailMessage.From = new MailAddress(MailMsgFrom);
mailMessage.Subject = subject;
mailMessage.Body = body;
mailMessage.IsBodyHtml = true;
mailMessage.To.Add(new MailAddress(recepientEmail));
mailMessage.Priority = System.Net.Mail.MailPriority.High;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
smtp.Timeout = 200000;
System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();
NetworkCred.UserName = MailMsgFrom;
NetworkCred.Password = MailMsgPass;
smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
smtp.Port = 587;
smtp.Send(mailMessage);
}
}
Après cela, vous devriez obtenir comme cette erreur
smtpException {"The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. Learn more at"} System.Net.Mail.SmtpException
Pour résoudre ce problème, connectez-vous d'abord à votre compte de messagerie sur votre compte Google dans un navigateur Web. Ensuite, suivez ce lien Activité du compte Google . Ensuite, vous obtiendrez les derniers appareils et activités de votre compte. Si show bloque votre activité actuelle de votre appareil actuel. Il suffit de débloquer cela. Ensuite, essayez à nouveau d'envoyer un email.
Merci
Avait le même problème en accédant à smtp.gmail.com à partir d'une application ASP.NET s'exécutant sur un hébergement Amazon AWS. Il s’est avéré que ma configuration était correcte - elle fonctionnait également bien à partir d’un autre ordinateur - mais Gmail refusait ma tentative de connexion, car j’essaie de me connecter depuis un emplacement inhabituel. Je me suis connecté à Gmail via l'interface Web (www.gmail.com) et j'ai dû répondre à un captcha. Après cela a fonctionné.
Avoir un rappel comme suit. Dites à System.Net
d'ignorer l'erreur!
Ajoutez ceci avant l'appel à Send()
ServicePointManager.ServerCertificateValidationCallback =
delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{ return true; };
smtp.Send(mail);
Mon problème était que le propriétaire du domaine de notre compte gmail avait désactivé à la fois "Accès pour les applications moins sécurisées" et l'authentification en deux étapes. Il n'y avait aucun moyen de l'activer, je ne pouvais même pas voir le réglage. J'ai donc testé avec mon compte personnel à la place, et cela a bien fonctionné.