it-swarm.com.de

Google Mail-Fehler: Der SMTP-Server ist nicht authentifiziert. Die Serverantwort war: 5.5.1 Authentifizierung erforderlich

Ich verwende folgenden Code, um E-Mails zu senden. Der Code funktioniert auf meinem lokalen Computer ordnungsgemäß. Aber auf dem Produktionsserver bekomme ich die Fehlermeldung

        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);

Und auf meinem Google Mail-Konto habe ich die folgende E-Mail erhalten, nachdem ich den Code vom Produktionsserver ausgeführt habe

Hallo , 

Jemand hat kürzlich Ihr Passwort verwendet, um sich bei Google zu registrieren Konto [email protected] Diese Person verwendete eine Anwendung wie als E-Mail, Client oder mobiles Gerät. 

Wir haben den Anmeldeversuch verhindert, falls dies ein Hijacker war, der versuchte, greife auf dein Konto zu. Bitte überprüfen Sie die Details des Anmeldeversuchs:

Freitag, 3. Januar 2014 13:56:08 Uhr UTC IP-Adresse: xxx.xx.xx.xxx (abcd.net.) Ort: Philadelphia PA, Philadelphia, PA, USA

Wenn Sie diesen Anmeldeversuch nicht erkennen, kann es sein, dass eine andere Person .__ ist. versuchen, auf Ihr Konto zuzugreifen. Sie sollten sich in Ihrem Konto und .__ anmelden. Setzen Sie Ihr Passwort sofort zurück. 

Passwort zurücksetzen 

Wenn dies bei Ihnen der Fall ist und Sie Probleme beim Zugriff auf Ihr Konto haben, Führen Sie die unter .__ aufgeführten Schritte zur Fehlerbehebung aus. http://support.google.com/mail?p=client_login

Mit freundlichen Grüßen Ihr Google-Konten-Team

193
vcs

Dies geschieht im Allgemeinen, wenn Sie versuchen, sich von einer anderen Zeitzone oder einem IP-Adresscomputer aus anzumelden. Ihr Produktionsserver und die von Ihnen verwendete Mail-ID befinden sich in unterschiedlichen Zeitzonen. Wählen Sie eine der einzigen Lösungen:

1) Melden Sie sich per Fernzugriff beim Produktionsserver an, und melden Sie sich einmal bei Google Mail mit Ihren Anmeldeinformationen an. Sie werden nach der Bestätigung gefragt, bestätigt und abgemeldet.

Oder 2) Melden Sie sich bei gmail auf Ihrem lokalen Computer an. Folgen Sie diesem Link und wählen Sie Überprüfen Sie diese Aktivität und ergreifen Sie geeignete Maßnahmen.

162
Arshad

Wenn Sie versuchen, E-Mails aus dem Code zu senden und Sie den Fehler finden "Der SMTP-Server erfordert eine sichere Verbindung oder der Client wurde nicht authentifiziert. Die Antwort des Servers war: 5.5.1 Authentication Required". Der Fehler kann aufgrund des folgenden Fehlers auftreten Fälle.

case 1:, wenn das Passwort falsch ist

case 2:, wenn Sie versuchen, sich von einer App aus anzumelden

case 3:, wenn Sie versuchen, sich von einer anderen Domäne als Ihrer Zeitzone/Domäne/Ihrem Computer anzumelden (Dies ist in den meisten Szenarien der Fall, wenn E-Mails über den Code gesendet werden.)

Für jeden gibt es eine Lösung

Lösung für Fall 1: Geben Sie das richtige Passwort ein.

Lösung 1 für Fall 2: Gehen Sie zu den Sicherheitseinstellungen unter folgendem Link https://www.google.com/settings/security/lesssecureapps und aktivieren Sie weniger sichere Apps. Damit Sie sich von allen Apps aus anmelden können.

Lösung 2 für Fall 2 :( siehe https://stackoverflow.com/a/9572958/52277 ) Aktivieren Sie die Zwei-Faktor-Authentifizierung (auch als Bestätigung in zwei Schritten bezeichnet) und generieren Sie dann eine anwendungsspezifische Passwort. Verwenden Sie dieses neu generierte Kennwort, um sich über SMTP zu authentifizieren.

Lösung 1 für Fall 3: (Dies kann hilfreich sein). Sie müssen die Aktivität überprüfen. Die Überprüfung der Aktivität ist jedoch aufgrund der neuesten Sicherheitsstandards nicht hilfreich. Der Link ist nicht hilfreich. Probieren Sie also den unten stehenden Fall aus.

Lösung 2 für Fall 3: Wenn Sie Ihren Code irgendwo auf dem Produktionsserver gehostet haben und Zugriff auf den Produktionsserver haben, nehmen Sie die Remote-Desktop-Verbindung zum Produktionsserver und versuchen Sie, sich einmal über den Browser der Produktion anzumelden Server . Dies fügt excpetioon für die Anmeldung bei google hinzu und Sie können sich vom Code aus anmelden.

Was aber, wenn Sie keinen Zugriff auf den Produktionsserver haben. probiere die Lösung 3

Lösung 3 für Fall 3: Sie müssen das Anmelden aus einer anderen Zeitzone/IP für Ihr Google-Konto aktivieren.

folgen Sie dazu dem Link https://g.co/allowaccess und gewähren Sie den Zugriff, indem Sie auf die Schaltfläche Weiter klicken. 

Und das ist es. Bitte schön. Jetzt können Sie sich von jedem Computer aus und mit jeder App bei Ihrem Google-Konto anmelden.

235
Roshan Parmar

Es ist ein Sicherheitsproblem. Google Mail verhindert standardmäßig den Zugriff Ihres E-Mail-Kontos von benutzerdefinierten Anwendungen. Sie können es einrichten, um die Anmeldung aus Ihrer Anwendung zu akzeptieren.

Nach dem Einloggen in Ihre E-Mail, KLICKEN SIE HIER

Sie gelangen auf die folgende Seite

 Less Secure Apps Page

92
Sayka

Nachdem ich heute ein paar Stunden damit verbracht hatte, jede Lösung hier auszuprobieren, konnte ich immer noch nicht über diesen Fehler hinwegkommen. Ich habe Gmail viele Male auf diese Weise verwendet, also wusste ich, dass es etwas Dummes war, aber nichts, was ich tat, beendete das Problem. Ich bin schließlich in meinem Fall über die Lösung gestolpert, also dachte ich, ich würde sie teilen.

Erstens sind die meisten der obigen Antworten ebenfalls erforderlich, aber in meinem Fall musste der Code beim Erstellen der SmtpClient-Klasse einfach geordnet werden.

Beachten Sie in diesem ersten Codefragment unten, wo sich die Zeile "Credentials = creds" befindet. Diese Implementierung generiert den Fehler, auf den in dieser Frage verwiesen wird, auch wenn Sie alles andere ordnungsgemäß eingerichtet haben.

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
        }

Wenn Sie jedoch den Setzaufruf Credentials nach unten verschieben, wird die E-Mail ohne Fehler gesendet. Ich habe keine Änderungen am umgebenden Code vorgenommen, dh den Benutzernamen/das Kennwort usw. Offensichtlich sind entweder EnableSSL, UseDefaultCredentials oder DeliveryMethod davon abhängig, dass zuerst die Berechtigungsnachweise festgelegt werden. Ich habe nicht getestet alle um herauszufinden, welche es war.

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
        }

Ich hoffe, dies hilft, jemandem in Zukunft einige Kopfschmerzen zu ersparen.

18
user1011627

Hi, ich hatte das gleiche Problem, 

was ich getan habe, um es zu lösen. Aktivieren Sie die weniger sichere App ., nachdem Sie sich mit meinem Google Mail-Konto verbunden haben. Ich habe diesen Link eingegeben: https://www.google.com/settings/security/lesssecureapps

Dann schalte ich die sichere App ein und, und die hat funktioniert . Es wurde auch oben gesagt

11
Barak Rosenfeld

Folgen Sie einfach dem Schritt in der Google-E-Mail und aktivieren Sie weniger sichere Apps. 

8
Trung

Ich habe einen zuvor funktionierenden Code, der diesen Fehler jetzt auslöst. Kein Problem mit dem Passwort. Sie müssen die Nachricht auch nicht in base64 konvertieren. Es stellt sich heraus, dass ich Folgendes tun muss:

  1. Deaktivieren Sie die 2-Faktor-Authentifizierung
  2. Setzen Sie "Weniger sichere Apps zulassen" auf ON
  3. Melden Sie sich vom Produktionsserver aus bei Ihrem Google Mail-Konto an
  4. Gehen Sie zu hier , um die Login-Aktivität zu genehmigen
  5. Führen Sie Ihre App auf dem Produktionsserver aus

Arbeitscode

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

Deaktivieren der 2-Faktor-Authentifizierung  Turning off 2-factor authentication

Setzen Sie "Weniger sichere Apps zulassen" auf ON (gleiche Seite, nach unten scrollen)  Allow less secure apps

7
Jeson Martajaya

Ich habe das gleiche Problem gehabt. Dies geschieht, wenn Sie die 2-Schritt-Überprüfung (MFA) einschalten. Schalten Sie einfach die 2-Schritt-Überprüfung aus und Ihr Problem sollte gelöst sein.

6
Anik

Unten ist mein Code. Ich hatte auch den gleichen Fehler, aber das Problem war, dass ich mein Passwort falsch angegeben habe. Der folgende Code wird einwandfrei funktionieren. Versuchen Sie es

            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);

Sie können es in meinem Blog verweisen.

4
Ganesh Pillai N

Sie müssen von hier aus die Option "Weniger sichere Apps zulassen" aktivieren https://myaccount.google.com/lesssecureapps

3
Raj K

aktivieren Sie einfach die Einstellung von oder gmail . siehe unten angegebenes Bild:

 enter image description here

2
Rajesh Paliwal

Was für mich funktionierte, war die Aktivierung der Option für weniger sichere Apps (ich verwende 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

Melden Sie sich also bei Ihrem Konto an und gehen Sie zu google.com/settings/security/lesssecureapps

2
Edgar

Ich hatte das gleiche Problem für eine Anwendung, die in Microsoft Azure implementiert wurde.

SmtpException: Der SMTP-Server erfordert eine sichere Verbindung oder die Client wurde nicht authentifiziert. Die Serverantwort war: 5.5.1 Authentifizierung erforderlich.

Zunächst habe ich alle unbekannten Geräte (einige IP-Adressen, die aus Irland stammen) auf der folgenden Seite (angemeldet als Google Mail-Nutzer) genehmigt: https://security.google.com/settings/u/1/security/Wertpapierkonto

Ich habe folgende Einstellungen für den Client verwendet:

var client = new SmtpClient("smtp.gmail.com");
client.Port = 587;
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("[email protected]", "my_password"); 

Es funktionierte erst, nachdem ich die folgende Eigenschaft auf dem SMTP-Client eingestellt hatte:

client.TargetName = "STARTTLS/smtp.gmail.com";
2
haiiaaa

Ich habe alle hier gefundenen Vorschläge ausprobiert, von der Aktivierung weniger sicherer Apps bis zum Testen von Port 587 ... nichts hat funktioniert. Zum Schluss habe ich nur die Zeile UseDefaultCredentials = false auskommentiert. Alles funktionierte, wenn ich diesen Boolean nicht berührte. 

1
Kris Coleman

Ein Kommentar von Tomasz Madeyski hat mein Problem behoben ... Er sagt, dass ein Fehler in SetDefaultCredential existiert, er sagt: 

"Das Problem ist, dass im UseDefaultCredentials-Setter der folgende Code vorhanden ist: this.transport.Credentials = value? (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials: (ICredentialsByHost) null; wodurch die vom Berechtigungsset-Setter festgelegten Berechtigungsnachweise außer Kraft gesetzt werden.

wenn Sie smtpClient.UseDefaultCredentials = false nach gesetzten Berechtigungsnachweisen eingeben ... Diese Zeile setzt diese Berechtigungsnachweise auf Null ...

1
FabianSilva

Möglicherweise müssen Sie ein spezifisches APP-Kennwort aus gmail erstellen Ihre App oder Ihr Skript verwenden dann dieses neue Kennwort anstelle Ihres regulären Kennworts .. __ Ihr reguläres Kennwort funktioniert weiterhin einwandfrei.

Das tat es für mich ... Ich benutzte immer noch den gleichen E-Mail-Account, musste aber ein neues app-spezifisches Passwort generieren.

https://support.google.com/accounts/answer/185833?hl=de

 Screen shot

Grundsätzlich können Sie dies hier tun: https://security.google.com/settings/security/apppasswords

0
samiup

NOVEMBER 2018, habe alles obige ohne Erfolg versucht.

Unten ist die Lösung, die endlich funktioniert hat. Leider verwendet es kein SSL, aber es funktioniert !!!

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

Sie sollten weniger sicheren Apps für den Zugriff auf Ihr Google-Konto zulassen.

machen:

https://myaccount.google.com/lesssecureapps

0
MohammadSoori

Ich habe mir wirklich viele Ideen angesehen, die einzige Lösung war diese (funktioniert mit verschiedenen E-Mail-Providern):

            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

Wenn Sie Google Mail verwenden.

  • 1-Anmeldung an Ihrem Konto 

    2- Durchsuchen dieses link

    3- Weniger sichere Apps zulassen: EIN

Genießen....

0
Muhammad Azeem

Ich bin ein Google-Apps für Geschäftskunden und verbringe die letzten paar Stunden damit, mich damit zu beschäftigen, selbst nachdem ich alle korrekten Einstellungen (SMTP, Port, enableSSL usw.) vorgenommen habe. Folgendes funktionierte für mich und die Websites, die beim Versuch, eine E-Mail zu senden, den Fehler 5.5.1 ausgelöst haben:

  1. Melden Sie sich bei admin.google.com an
  2. Klicken Sie auf SICHERHEIT <- wenn dies nicht sichtbar ist, klicken Sie auf "MORE CONTROLS" und fügen Sie es aus der Liste hinzu
  3. Klicken Sie auf Grundeinstellungen
  4. Scrollen Sie zum unteren Rand des Felds Grundeinstellungen und klicken Sie auf den Link: "Zu Einstellungen für weniger sichere Apps wechseln".
  5. Wählen Sie die Option 3: Erzwingen Sie den Zugriff auf weniger sichere Apps für alle Benutzer (nicht empfohlen).
  6. Drücken Sie SAVE am unteren Rand des Fensters

Danach funktionierten meine E-Mail-Formulare von der Website wieder. Viel Glück!

0
RichieMN

setzen Sie keinen Haltepunkt vor dem Erwarten von smtp.SendMailAsync (mail);

:) 

wenn es mit einem Haltepunkt wartet, der diesen Fehler anzeigt, wenn ich den Haltepunkt entferne, hat es funktioniert

0
dewelloper