J'utilise le code suivant pour envoyer un email. Le code fonctionne correctement dans ma machine locale. Mais sur le serveur de production je reçois le message d'erreur
var fromAddress = new MailAddress("[email protected]");
var fromPassword = "xxxxxx";
var toAddress = new MailAddress("[email protected]");
string subject = "subject";
string body = "body";
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
smtp.Send(message);
Et sur mon compte Gmail, j'ai reçu le courrier électronique suivant après avoir exécuté le code à partir du serveur de production.
Salut ,
Une personne a récemment utilisé votre mot de passe pour vous connecter à Google Compte [email protected]. Cette personne utilisait une application telle que en tant qu'e-mail, client ou appareil mobile.
Nous avons empêché la tentative de connexion au cas où il s'agirait d'un pirate de l'air essayant de accéder à votre compte. Veuillez consulter les détails de la tentative de connexion:
Vendredi, le 3 janvier 2014 à 13:56:08 heures Adresse UTC: xxx.xx.xx.xxx (abcd.net.) Lieu: Philadelphie PA, Philadelphie, PA, Etats-Unis
Si vous ne reconnaissez pas cette tentative de connexion, quelqu'un d'autre pourrait être essayer d'accéder à votre compte. Vous devez vous connecter à votre compte et réinitialiser votre mot de passe immédiatement.
Réinitialiser le mot de passe
Si tel est votre cas et que vous rencontrez des difficultés pour accéder à votre compte, Suivez les étapes de dépannage énumérées à la page http://support.google.com/mail?p=client_login
Cordialement, L'équipe des comptes Google
Cela se produit généralement lorsque vous essayez de vous connecter depuis un fuseau horaire ou un ordinateur d'adresse IP différent. Votre serveur de production et l'ID de messagerie que vous avez utilisés sont situés dans un fuseau horaire différent. Choisissez l'une des solutions suivantes:
1) Connectez-vous au serveur de production via un accès à distance, puis connectez-vous une fois à gmail avec vos informations d'identification. Ils demanderont la confirmation, la confirmeront et se déconnecteront.
Ou 2) connectez-vous gmail à votre ordinateur local, suivez ceci Lien et choisissez vérifiez cette activité et prenez les mesures qui s'imposent.
Lorsque vous essayez d'envoyer du courrier à partir de code et que vous trouvez le message d'erreur "Le serveur SMTP nécessite une connexion sécurisée ou le client n'a pas été authentifié. La réponse du serveur était: 5.5.1 Authentification requise", l'erreur pouvant survenir si: cas.
cas 1: lorsque le mot de passe est incorrect
cas 2: lorsque vous essayez de vous connecter depuis une application
cas 3: lorsque vous essayez de vous connecter à partir d'un domaine autre que votre fuseau horaire/domaine/ordinateur (C'est le cas dans la plupart des scénarios lorsque vous envoyez un courrier à partir de code)}
Il y a une solution pour chaque
solution pour le cas 1: Entrez le mot de passe correct.
solution 1 pour le cas 2: accédez aux paramètres de sécurité sur le lien suivant https://www.google.com/settings/security/lesssecureapps et activez des applications moins sécurisées. Pour pouvoir vous connecter depuis toutes les applications.
solution 2 pour le cas 2 :( voir https://stackoverflow.com/a/9572958/52277 ) activer l'authentification à deux facteurs (également appelée vérification en deux étapes), puis générer une application spécifique mot de passe. Utilisez ce mot de passe nouvellement généré pour vous authentifier via SMTP.
solution 1 pour le cas 3: (Cela pourrait être utile), vous devez revoir l'activité. mais l'examen de l'activité ne sera pas utile en raison des dernières normes de sécurité, le lien ne sera pas utile. Alors essayez le cas ci-dessous.
solution 2 pour le cas 3: si vous avez hébergé votre code quelque part sur le serveur de production et si vous avez accès au serveur de production, établissez une connexion de bureau à distance au serveur de production et essayez de vous connecter une fois à partir du navigateur de production. serveur . Cela ajoutera un excpetioon pour la connexion à Google et vous permettra de vous connecter à partir du code.
Mais si vous n'avez pas accès au serveur de production. Essayez la solution 3
solution 3 pour le cas 3: Vous devez autoriser la connexion à partir d'un autre fuseau horaire/ip pour votre compte Google.
pour ce faire, suivez le lien https://g.co/allowaccess et autorisez l'accès en cliquant sur le bouton Continuer.
Et c'est tout. Voici. Maintenant, vous pourrez vous connecter depuis n'importe quel ordinateur et par n'importe quel moyen d'application sur votre compte Google.
C’est un problème de sécurité. Par défaut, Gmail empêche l’accès de votre compte de messagerie à partir d’applications personnalisées. Vous pouvez le configurer pour accepter le login depuis votre application.
Après vous être connecté à votre adresse e-mail, CLIQUEZ ICI
Cela vous mènera à la page suivante
Après avoir passé quelques heures aujourd’hui à essayer toutes les solutions ici, je n’étais toujours pas en mesure de surmonter cette erreur exacte. J'ai utilisé gmail de nombreuses fois de cette façon, donc je savais que c'était quelque chose de stupide, mais rien de ce que j'ai fait n'a résolu le problème. Je suis finalement tombé sur la solution dans mon cas alors je pensais partager.
Premièrement, la plupart des réponses ci-dessus sont également requises, mais dans mon cas, il s'agissait simplement de commander le code lors de la création de la classe SmtpClient.
Dans le premier extrait de code ci-dessous, notez l'emplacement de la ligne "Credentials = creds". Cette implémentation générera l'erreur référencée dans cette question même si tout le reste a été configuré correctement.
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient
{
Host = Emailer.Host,
Port = Emailer.Port,
Credentials = creds,
EnableSsl = Emailer.RequireSSL,
UseDefaultCredentials = false,
DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network
}
Toutefois, si vous déplacez l'appel du créateur d'informations d'identification vers le bas, le courrier électronique sera envoyé sans erreur. Je n'ai apporté aucun changement au code environnant ... c'est-à-dire ... le nom d'utilisateur/mot de passe, etc. En clair, soit EnableSSL, UseDefaultCredentials, ou DeliveryMethod dépendent des informations d'identification définies en premier ... Je n'ai pas testé tout pour savoir lequel c'était bien.
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient
{
Host = Emailer.Host,
Port = Emailer.Port,
EnableSsl = Emailer.RequireSSL,
UseDefaultCredentials = false,
DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
Credentials = creds
}
J'espère que cela aidera à sauver quelqu'un d'autres maux de tête à l'avenir.
Salut j'ai eu le même problème,
ce que j'ai fait pour le résoudre. est d'activer l'application moins sécurisée . après la connexion à mon compte gmail. J'ai saisi ce lien: https://www.google.com/settings/security/lesssecureapps
Puis j'allume l'application sécurisée et, et cela a fonctionné . Il a été dit aussi ci-dessus
Il suffit de suivre l’étape du courrier électronique de Google pour activer les applications moins sécurisées.
J'ai un code qui fonctionnait auparavant qui lève cette erreur maintenant. Aucun problème avec le mot de passe. Pas besoin de convertir le message en base64 non plus. Il s'avère que je dois faire ce qui suit:
Code de travail
public static void SendEmail(string emailTo, string subject, string body)
{
var client = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new NetworkCredential("[email protected]", "secretpassword"),
EnableSsl = true
};
client.Send("[email protected]", emailTo, subject, body);
}
Désactiver l'authentification à 2 facteurs
Réglez "Autoriser les applications moins sécurisées" sur ON (même page, vous devez faire défiler l'écran vers le bas)
J'ai rencontré le même problème. Cela se produit lorsque vous activez la vérification en 2 étapes (MFA)… .. Il suffit de désactiver la vérification en 2 étapes pour résoudre votre problème.
Ci-dessous est mon code.J'ai également eu la même erreur, mais le problème était que j'ai donné mon mot de passe faux.
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("[email protected]");
mail.To.Add("[email protected]");
mail.To.Add("[email protected]");
mail.Subject = "Password Recovery ";
mail.Body += " <html>";
mail.Body += "<body>";
mail.Body += "<table>";
mail.Body += "<tr>";
mail.Body += "<td>User Name : </td><td> HAi </td>";
mail.Body += "</tr>";
mail.Body += "<tr>";
mail.Body += "<td>Password : </td><td>aaaaaaaaaa</td>";
mail.Body += "</tr>";
mail.Body += "</table>";
mail.Body += "</body>";
mail.Body += "</html>";
mail.IsBodyHtml = true;
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential("sendfrommailaddress.com", "password");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
Vous pouvez le consulter dans mon blog
Vous devez activer "Autoriser les applications moins sécurisées" à partir d'ici https://myaccount.google.com/lesssecureapps
Ce qui a fonctionné pour moi a été d'activer l'option pour les applications moins sécurisées (j'utilise VB.NET)
Public Shared Sub enviaDB(ByRef body As String, ByRef file_location As String)
Dim mail As New MailMessage()
Dim SmtpServer As New SmtpClient("smtp.gmail.com")
mail.From = New MailAddress("[email protected]")
mail.[To].Add("[email protected]")
mail.Subject = "subject"
mail.Body = body
Dim attachment As System.Net.Mail.Attachment
attachment = New System.Net.Mail.Attachment(file_location)
mail.Attachments.Add(attachment)
SmtpServer.Port = 587
SmtpServer.Credentials = New System.Net.NetworkCredential("user", "password")
SmtpServer.EnableSsl = True
SmtpServer.Send(mail)
End Sub
Alors connectez-vous à votre compte, puis accédez à google.com/settings/security/lesssecureapps
J'ai eu le même problème pour une application déployée sur Microsoft Azure.
SmtpException: le serveur SMTP nécessite une connexion sécurisée ou le le client n'a pas été authentifié. La réponse du serveur était: 5.5.1 Identification requise.
J'ai d'abord approuvé tous les périphériques inconnus (certaines adresses IP originaires d'Irlande) à la page suivante (connecté en tant qu'utilisateur gmail): https://security.google.com/settings/u/1/ sécurité/compte sécurisé
J'ai utilisé les paramètres suivants pour le client:
var client = new SmtpClient("smtp.gmail.com");
client.Port = 587;
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("[email protected]", "my_password");
Il a commencé à fonctionner uniquement après avoir défini la propriété suivante sur le client smtp:
client.TargetName = "STARTTLS/smtp.gmail.com";
J'ai essayé toutes les suggestions trouvées ici, depuis l'activation d'applications moins sécurisées jusqu'à l'essai du port 587 ... rien n'a fonctionné. Enfin, je viens de commenter la ligne UseDefaultCredentials = false
. Tout a fonctionné si je ne touchais pas ce booléen.
Un commentaire de Tomasz Madeyski est ce qui a résolu mon problème ... il raconte qu'il existe un bogue sur SetDefaultCredential, lui dit:
"Le problème est qu’il existe ce code dans le setter UseDefaultCredentials: this.transport.Credentials = valeur? (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials: (ICredentialsByHost) null;
si vous mettez smtpClient.UseDefaultCredentials = false
après les informations d'identification définies ... cette ligne a pour valeur null ces informations d'identification ...
Vous devrez peut-être créer/générer un mot de passe APP spécifique à partir de gmail . Votre application ou script utilisera ensuite ce nouveau mot de passe au lieu de votre mot de passe habituel . Votre mot de passe normal fonctionnera toujours correctement.
C’est ce qui m’a motivé… .. J'ai toujours utilisé le même compte de messagerie mais je devais générer un nouveau mot de passe spécifique à l’application.
https://support.google.com/accounts/answer/185833?hl=fr
En gros, vous pouvez le faire ici: https://security.google.com/settings/security/apppasswords
NOVEMBRE 2018, j'ai tout essayé ci-dessus sans succès.
Voici la solution qui a finalement fonctionné. Malheureusement, ce n'est pas en utilisant SSL, mais ça marche !!!
var fromAddress = new MailAddress([email protected], "From Name");
var toAddress = new MailAddress("[email protected]", "To Name");
const string subject = "Subject";
const string body = "Body";
var smtp = new SmtpClient
{
Host = "aspmx.l.google.com",
Port = 25,
EnableSsl = false
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
Vous devez interdire aux applications moins sécurisées d'accéder à votre compte Google.
faire:
J'ai vraiment examiné de nombreuses idées, la seule solution était la suivante (fonctionne avec différents fournisseurs de messagerie)
try
{
ViewProgressbar("Try to connect mail-server...", progressBar1.Value = 20);
string Host = dsProvider.Rows[y]["POP_hostOut"].ToString();
int port = int.Parse(dsProvider.Rows[y]["POP_portOut"].ToString()); //587
string[] email = von1.Split('@');
string userName = (dsProvider.Rows[y]["login"].ToString() == "email[0]@email[1]")? email[0]+"@"+email[1] : email[0];
string password = layer.getUserPassword(listSender.SelectedValue.ToString());
SmtpClient client = new SmtpClient(Host, port);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
//A idea from MSDN but it not works. You got the "The server response was: 5.5.1 Authentication Required."
//System.Net.NetworkCredential myCreds = new System.Net.NetworkCredential(userName, password, Host);
//System.Net.CredentialCache cache = new System.Net.CredentialCache();
//cache.Add(Host, port, "NTLM", myCreds);
///cache.GetCredential(Host, port, "NTLM"); //NTLM
client.Credentials = new System.Net.NetworkCredential(userName, password);
client.Host = Host;
client.Port = port;
client.EnableSsl = true;
client.Send(message);
ViewProgressbar();
}
catch (SmtpException ex)...
Si vous utilisez gmail.
1 connexion à votre compte
2- parcourir ce lien
3- Autoriser les applications moins sécurisées: ON
Prendre plaisir....
Je suis un abonné Google Apps pour les entreprises et je passe les dernières heures à régler ce problème, même après avoir défini tous les paramètres corrects (smtp, port, enableSSL, etc.). Voici ce qui a fonctionné pour moi et les sites Web générant l'erreur 5.5.1 lors de l'envoi d'un courrier électronique:
Après cela, mes formulaires de courrier électronique du site Web fonctionnaient à nouveau. Bonne chance!
ne mettez pas le point d'arrêt avant wait smtp.SendMailAsync (mail);
:)
quand il attend avec un point d'arrêt donnant cette erreur quand je supprime le point d'arrêt, il a fonctionné