web-dev-qa-db-fra.com

Erreur Gmail: 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

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

193
vcs

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.

162
Arshad

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.

235
Roshan Parmar

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

 Less Secure Apps Page

92
Sayka

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.

18
user1011627

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

11
Barak Rosenfeld

Il suffit de suivre l’étape du courrier électronique de Google pour activer les applications moins sécurisées. 

8
Trung

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:

  1. Désactiver l'authentification à 2 facteurs
  2. Réglez "Autoriser les applications moins sécurisées" sur ON
  3. Connectez-vous à votre compte Gmail depuis le serveur de production.
  4. Allez ici aussi pour approuver l'activité de connexion
  5. Exécuter votre application sur le serveur de production

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  Turning off 2-factor authentication

Réglez "Autoriser les applications moins sécurisées" sur ON (même page, vous devez faire défiler l'écran vers le bas)  Allow less secure apps

7
Jeson Martajaya

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.

6
Anik

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

4
Ganesh Pillai N

Vous devez activer "Autoriser les applications moins sécurisées" à partir d'ici https://myaccount.google.com/lesssecureapps

3
Raj K

il suffit d’activer le paramètre ou gmail . voir ci-dessous l’image donnée:

 enter image description here

2
Rajesh Paliwal

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

2
Edgar

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";
2
haiiaaa

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. 

1
Kris Coleman

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 ...

1
FabianSilva

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

 Screen shot

En gros, vous pouvez le faire ici: https://security.google.com/settings/security/apppasswords

0
samiup

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);
}
0
InGeek

Vous devez interdire aux applications moins sécurisées d'accéder à votre compte Google.

faire:

https://myaccount.google.com/lesssecureapps

0
MohammadSoori

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)...
0
Walter

Si vous utilisez gmail.

  • 1 connexion à votre compte 

    2- parcourir ce lien

    3- Autoriser les applications moins sécurisées: ON

Prendre plaisir....

0
Muhammad Azeem

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:

  1. Connectez-vous à votre admin.google.com.
  2. Cliquez sur SÉCURITÉ <- si ce n'est pas visible, cliquez sur 'PLUS DE CONTRÔLES' et ajoutez-le à partir de la liste.
  3. Cliquez sur Paramètres de base
  4. Faites défiler jusqu'au bas de la zone Paramètres de base, cliquez sur le lien: "Accéder aux paramètres des applications moins sécurisées".
  5. Sélectionnez l'option n ° 3: Forcer l'accès à des applications moins sécurisées pour tous les utilisateurs (Non recommandé)
  6. Appuyez sur ENREGISTRER en bas de la fenêtre.

Après cela, mes formulaires de courrier électronique du site Web fonctionnaient à nouveau. Bonne chance!

0
RichieMN

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é

0
dewelloper