Ich verwende den folgenden Code, um E-Mails zu senden. Der Code funktioniert auf meinem lokalen Computer ordnungsgemäß. Aber auf dem Produktionsserver wird die Fehlermeldung angezeigt
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 meiner Google Mail-Klimaanlage 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 zu versuchen, sich in Ihrem Google-Konto [email protected] anzumelden. Diese Person verwendete eine Anwendung wie eine E-Mail, einen Client oder ein mobiles Gerät.
Wir haben den Anmeldeversuch verhindert, falls dies ein Entführer war, der versucht, auf Ihr Konto zuzugreifen. 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, versucht möglicherweise eine andere Person, auf Ihr Konto zuzugreifen. Sie sollten sich in Ihrem Konto anmelden und Ihr Passwort sofort zurücksetzen.
Passwort zurücksetzen
Wenn Sie es waren und Sie Probleme beim Zugriff auf Ihr Konto haben, führen Sie die unter http://support.google.com/mail?p=client_login aufgeführten Schritte zur Fehlerbehebung aus
Mit freundlichen Grüßen Das Google Accounts-Team
Antworten:
Dies geschieht im Allgemeinen, wenn Sie versuchen, sich von einer anderen Zeitzone oder einem anderen IP-Adresscomputer aus anzumelden. Ihr Produktionsserver und die von Ihnen verwendete E-Mail-ID befinden sich in unterschiedlichen Zeitzonen. Wählen Sie eine dieser beiden Lösungen:
1) Melden Sie sich über den Remotezugriff beim Produktionsserver an und melden Sie sich einmal mit Ihren Anmeldeinformationen bei Google Mail an. Sie werden nach der Bestätigung fragen, diese bestätigen und sich abmelden.
Oder 2) Melden Sie sich bei Google Mail auf Ihrem lokalen Computer an, folgen Sie diesem Link und wählen Sie "Diese Aktivität überprüfen" und ergreifen Sie die entsprechenden Maßnahmen.
quelle
Wenn Sie versuchen, E-Mails vom Code aus zu senden, und Sie den Fehler "Der SMTP-Server benötigt eine sichere Verbindung oder der Client wurde nicht authentifiziert. Die Serverantwort lautete: 5.5.1 Authentifizierung erforderlich" finden, kann der Fehler aufgrund der folgenden Fälle auftreten.
Fall 1: Wenn das Passwort falsch ist
Fall 2: Wenn Sie versuchen, sich von einer App aus anzumelden
Fall 3: Wenn Sie versuchen, sich von einer anderen Domäne als Ihrer Zeitzone / Domäne / Ihrem Computer aus anzumelden (Dies ist in den meisten Szenarien der Fall, wenn Sie E-Mails vom Code senden).
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 dem folgenden 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 zweistufige Überprüfung bezeichnet) und generieren Sie dann ein anwendungsspezifisches Kennwort. 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. Das Überprüfen der Aktivität ist jedoch aufgrund der neuesten Sicherheitsstandards nicht hilfreich. Der Link ist nicht hilfreich. Versuchen Sie also den folgenden Fall.
Lösung 2 für Fall 3 : Wenn Sie Ihren Code irgendwo auf dem Produktionsserver gehostet haben und Zugriff auf den Produktionsserver haben, stellen Sie eine Remotedesktopverbindung zum Produktionsserver her und versuchen Sie, sich einmal über den Browser des Produktionsservers anzumelden. Dadurch wird eine Ausnahme für die Anmeldung bei Google hinzugefügt, und Sie können sich über den Code anmelden.
Was aber, wenn Sie keinen Zugriff auf den Produktionsserver haben? versuchen Sie die Lösung 3
Lösung 3 für Fall 3: Sie müssen die Anmeldung aus einer anderen Zeitzone / IP für Ihr Google-Konto aktivieren.
Folgen Sie dazu dem Link https://g.co/allowaccess und erlauben 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 und mit jeder App in Ihr Google-Konto einloggen.
quelle
Es ist ein Sicherheitsproblem. Google Mail verhindert standardmäßig den Zugriff von benutzerdefinierten Anwendungen auf Ihr E-Mail-Konto. Sie können es so einrichten, dass die Anmeldung von Ihrer Anwendung akzeptiert wird.
Nachdem Sie sich bei Ihrer E-Mail angemeldet haben , KLICKEN SIE HIER
Sie gelangen auf die folgende Seite
quelle
Nachdem ich heute ein paar Stunden damit verbracht hatte, jede Lösung hier auszuprobieren, konnte ich diesen genauen Fehler immer noch nicht überwinden. Ich habe Google Mail viele Male auf diese Weise verwendet, also wusste ich, dass es etwas Dummes war, aber nichts, was ich getan habe, hat das Problem behoben. Ich stolperte schließlich über die Lösung in meinem Fall und dachte, ich würde sie teilen.
Erstens sind die meisten der oben genannten Antworten ebenfalls erforderlich, aber in meinem Fall war es eine einfache Frage der Reihenfolge des Codes beim Erstellen der
SmtpClient
Klasse.Beachten Sie in diesem ersten Codeausschnitt unten, wo sich die
Credentials = creds
Zeile befindet. Diese Implementierung generiert den Fehler, auf den in dieser Frage verwiesen wird, auch wenn Sie alles andere ordnungsgemäß eingerichtet haben.Wenn Sie jedoch den Setter-Aufruf für Anmeldeinformationen nach unten verschieben, wird die E-Mail ohne Fehler gesendet. Ich habe keine Änderungen am umgebenden Code vorgenommen ... dh ... den Benutzernamen / das Passwort usw. Natürlich
EnableSSL, UseDefaultCredentials, or the DeliveryMethod
hängt entweder das davon ab, obCredentials
es zuerst festgelegt wird ... Ich habe nicht alle getestet, um herauszufinden, um welches es sich handelt .Hoffe, dies hilft jemand anderem, in Zukunft Kopfschmerzen zu ersparen.
quelle
UseDefaultCredentials
Setter diesen Code gibt,this.transport.Credentials = value ? (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials : (ICredentialsByHost) null;
dercredentials
den vomCredentials
Setter festgelegten Code überschreibt . Für mich sieht es nachSmtpClient
's Bug ausSie müssen "Weniger sichere Apps zulassen" von hier aus aktivieren: https://myaccount.google.com/lesssecureapps
quelle
Hallo, ich hatte das gleiche Problem,
Was ich getan habe, um es zu lösen. ist die weniger sichere App einzuschalten. nach dem Herstellen einer Verbindung zu meinem Google Mail-Konto. Ich habe diesen Link eingegeben: https://www.google.com/settings/security/lesssecureapps
Dann schalte ich die sichere App ein und und es hat funktioniert. es wurde auch oben gesagt
quelle
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:
Arbeitscode
Deaktivieren der 2-Faktor-Authentifizierung
Setzen Sie "Weniger sichere Apps zulassen" auf EIN (dieselbe Seite muss nach unten scrollen)
quelle
Folgen Sie einfach dem Schritt in der Google-E-Mail und aktivieren Sie weniger sichere Apps.
quelle
Ich habe das gleiche Problem konfrontiert. Dies geschieht, wenn Sie die 2-Schritt-Überprüfung (MFA) aktivieren. Deaktivieren Sie einfach die 2-Schritt-Überprüfung und Ihr Problem sollte gelöst sein.
quelle
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 perfekt funktionieren. Versuchen Sie es
Sie können es in meinem Blog verweisen
quelle
Aktivieren Sie einfach die Einstellung von oder Google Mail. siehe unten angegebenes Bild:
quelle
Ich hatte das gleiche Problem für eine in Microsoft Azure bereitgestellte Anwendung.
Zuerst habe ich alle unbekannten Geräte (einige IP-Adressen aus Irland) auf der folgenden Seite (als Google Mail-Benutzer angemeldet) genehmigt: https://security.google.com/settings/u/1/security/secureaccount
Ich habe die folgenden Einstellungen für den Client verwendet:
Es begann erst zu funktionieren, nachdem ich die folgende Eigenschaft auf dem SMTP-Client festgelegt hatte:
quelle
Für mich hat es funktioniert, die Option für weniger sichere Apps zu aktivieren (ich verwende VB.NET).
Melden Sie sich also in Ihrem Konto an und gehen Sie zu google.com/settings/security/lesssecureapps
quelle
Ein Kommentar von Tomasz Madeyski hat mein Problem behoben ... er sagt, dass ein Fehler in SetDefaultCredential vorliegt, sagt er:
"Das Problem ist, dass im UseDefaultCredentials-Setter der folgende Code vorhanden ist: this.transport.Credentials = value? (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials: (ICredentialsByHost) null; überschreibt die vom Credentials-Setter festgelegten Anmeldeinformationen. Für mich sieht es wie der Fehler von SmtpClient aus."
Wenn Sie
smtpClient.UseDefaultCredentials = false
nach dem Festlegen der Anmeldeinformationen ... diese Zeile setzen, um diese Anmeldeinformationen auf Null zu setzen ...quelle
NOVEMBER 2018, habe alles oben ohne Erfolg versucht.
Unten ist die Lösung, die endlich funktioniert hat. Leider wird kein SSL verwendet, aber es funktioniert !!!
quelle
Ich habe alle hier gefundenen Vorschläge ausprobiert, von der Aktivierung weniger sicherer Apps bis zum Versuch von Port 587 ... nichts hat funktioniert. Schließlich habe ich gerade die Zeile auskommentiert
UseDefaultCredentials = false
. Alles hat funktioniert, wenn ich diesen Booleschen Wert nicht berührt habe.quelle
Ich habe mir wirklich viele Ideen angesehen, die einzige Lösung war diese (funktioniert mit verschiedenen E-Mail-Anbietern):
quelle
Ich bin ein Google Apps für Geschäftsabonnenten und verbringe die letzten Stunden damit, mich nur damit zu befassen, selbst nachdem ich alle richtigen Einstellungen vorgenommen habe (SMTP, Port, EnableSSL usw.). Folgendes hat für mich und die Websites funktioniert, auf denen beim Versuch, eine E-Mail zu senden, der Fehler 5.5.1 aufgetreten ist:
Danach funktionierten meine E-Mail-Formulare von der Website wieder. Viel Glück!
quelle
Möglicherweise müssen Sie ein bestimmtes APP-Passwort aus Google Mail erstellen / generieren. Ihre App oder Ihr Skript verwendet dann dieses neue Passwort anstelle Ihres regulären Passworts. Ihr reguläres Passwort funktioniert weiterhin gut für Sie.
Das hat es für mich getan. Ich habe immer noch dasselbe E-Mail-Konto verwendet, musste jedoch ein neues app-spezifisches Passwort generieren.
https://support.google.com/accounts/answer/185833?hl=de
Grundsätzlich können Sie dies hier tun: https://security.google.com/settings/security/apppasswords
quelle
Wenn Sie Google Mail verwenden.
1-Anmeldung bei Ihrem Konto
2- Durchsuchen Sie diesen Link
3- Weniger sichere Apps zulassen: EIN
Genießen....
quelle
Sie sollten weniger sicheren Apps den Zugriff auf Ihr Google-Konto untersagen .
machen:
https://myaccount.google.com/lesssecureapps
quelle
Setzen Sie den Haltepunkt nicht vor dem Warten auf smtp.SendMailAsync (mail);
:) :)
Wenn es mit einem Haltepunkt wartet, der diesen Fehler verursacht, wenn ich den Haltepunkt entferne, hat es funktioniert
quelle
Ich habe alle oben genannten Lösungen verwendet, aber es hat schließlich erst funktioniert, nachdem ich den IMAP-Zugriff über die Google Mail-Einstellungen aktiviert habe. Link zum Aktivieren des IMAP-Zugriffs in den Google Mail-Einstellungen
Natürlich waren auch die Punkte in den anderen Lösungen erforderlich.
quelle
Versuchen Sie, den Host zu wechseln. Dies ist der neue. Ich habe diesen konfigurierenden Mozilla Thunderbird
diese Arbeit für mich
quelle