Senden von E-Mails über den Google Mail-SMTP-Server mit C #


242

Aus irgendeinem Grund funktionieren für mich weder die akzeptierte noch andere Antworten für " Senden von E-Mails in .NET über Google Mail ". Warum sollten sie nicht arbeiten?

UPDATE: Ich habe alle Antworten (akzeptiert und anderweitig) in der anderen Frage ausprobiert, aber keine davon funktioniert.

Ich möchte nur wissen, ob es für andere funktioniert, andernfalls hat Google möglicherweise etwas geändert (was zuvor passiert ist).

Wenn ich den verwendeten Code ausprobiere SmtpDeliveryMethod.Network, erhalte ich beim Senden (Nachricht) schnell eine SmtpException. Die Nachricht ist

Der SMTP-Server erfordert eine sichere Verbindung oder der Client wurde nicht authentifiziert.

Die Serverantwort lautete:

5.5.1 Authentifizierung erforderlich. Erfahren Sie mehr unter "<- im Ernst, es endet dort.

AKTUALISIEREN:

Dies ist eine Frage, die ich vor langer Zeit gestellt habe, und die akzeptierte Antwort ist Code, den ich viele, viele Male in verschiedenen Projekten verwendet habe.

Ich habe einige der Ideen in diesem Beitrag und anderen EmailSender-Projekten übernommen, um ein EmailSender-Projekt bei Codeplex zu erstellen . Es wurde für Testbarkeit entwickelt und unterstützt meine bevorzugten SMTP-Dienste wie GoDaddy und Gmail.


Ich habe versucht, dies mit ähnlichen Methoden in einer anderen Sprache zu tun. Ich bin auf die gleiche Art von Dingen gestoßen: Alte dokumentierte Methoden, die vorher funktionierten, funktionierten bei mir nicht. Sie fragen sich also, ob Google etwas geändert hat oder ob Sie etwas falsch gemacht haben.
AaronLS

2
@aaronls Die einzige Änderung scheint sich auf den 465-Port zu beziehen. Ich habe es versucht, als ich nach einer Lösung gesucht habe (ich habe gerade daran gearbeitet), und die 465-Port-Timeouts die ganze Zeit. Wenn dies der Fall ist, versuchen Sie es mit dem 587-Port.
eglasius

2
Dieses Problem ist auf die "Wortüberprüfung" (Captcha) zurückzuführen. Wenn Sie sich manuell über die Weboberfläche anmelden und Captcha eingeben, funktioniert Ihr SMTP.
Robert Koritnik

4
FWIW, arbeitet für mich. Sie müssen 587 und .EnableSSL true verwenden. c # 4 / .NET 4 unterstützt derzeit kein alternatives 465 / SSL. Google Mail- Anforderungen zum Konfigurieren anderer E-Mail-Clients .
GerryLowry

1
Folgen Sie der Antwort von @eglasius und stellen Sie sicher, dass Sie die Einstellung "Weniger sichere Apps zulassen" in Google Mail aktivieren, damit Google Mail Ihr Konto authentifizieren kann.
user2713706

Antworten:


290

CVertex, überprüfen Sie Ihren Code und veröffentlichen Sie ihn, wenn sich daraus nichts ergibt. Ich habe dies nur auf einer ASP.NET-Testwebsite aktiviert, an der ich gearbeitet habe, und es funktioniert.

Eigentlich hatte ich irgendwann ein Problem mit meinem Code. Ich habe es erst entdeckt, als ich eine einfachere Version eines Konsolenprogramms hatte und sah, dass es funktioniert (keine Änderung auf der Google Mail-Seite, da Sie sich Sorgen machten). Der folgende Code funktioniert genau wie die Beispiele, auf die Sie sich bezogen haben:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new SmtpClient("smtp.gmail.com", 587)
            {
                Credentials = new NetworkCredential("myusername@gmail.com", "mypwd"),
                EnableSsl = true
            };
            client.Send("myusername@gmail.com", "myusername@gmail.com", "test", "testbody");
            Console.WriteLine("Sent");
            Console.ReadLine();
        }
    }
}

Ich habe es auch mit einer Kombination aus web.config, http://msdn.microsoft.com/en-us/library/w355a94k.aspx und Code zum Laufen gebracht (da EnableSsldie Konfigurationsdatei keine Übereinstimmung enthält :().


1
Hat in einer C # Winforms-Anwendung hervorragend für mich funktioniert. Danke, Freddy.
Andrew

13
Denken Sie daran, dass Code wie dieser Ihre Google Mail-Anmeldeinformationen effektiv im Klartext an den Benutzer überträgt ...
Chris Marisic

3
Es gibt tatsächlich eine passende Einstellung für enableSsl in der web.config, siehe Antwort unten
Wiebe Tijsma

4
@ Zidad, das in 4.0 hinzugefügt wurde.
Eglasius

21
Möglicherweise müssen Sie auch den Zugriff für "weniger sichere Apps" auf Ihrer Google Mail-Einstellungsseite aktivieren: google.com/settings/security/lesssecureapps . Dies ist erforderlich, wenn die Ausnahme "` Die Serverantwort lautete: 5.5.1 Authentifizierung erforderlich.
Ravendarksky

73

Das Folgende wird mit ziemlicher Sicherheit die ANTWORTEN, auf Ihre Frage , wenn alle HAT GEGEN ELSE :

Ich habe genau den gleichen Fehler erhalten. Es hat sich herausgestellt, dass der neue Algorithmus zur Messung der Passwortstärke von Google mein aktuelles Passwort als zu schwach eingestuft hat und mir nichts darüber erzählt hat (nicht einmal eine Nachricht oder Warnung). Wie habe ich das entdeckt? ? Nun, ich habe mich entschieden, mein Passwort zu ändern, um zu sehen, ob es helfen würde (alles andere ohne Erfolg versucht), und als ich mein Passwort geändert habe, hat es funktioniert!

Für ein Experiment habe ich dann versucht, mein Kennwort wieder auf mein vorheriges Kennwort zu ändern, um zu sehen, was passieren würde. Google Mail hat mir dies nicht erlaubt. Ich habe den Grund "Entschuldigung, wir können Ihnen nicht erlauben, diese Änderung als von Ihnen ausgewählt zu speichern." Passwort ist zu schwach "und würde mich nicht zu meinem alten Passwort zurückkehren lassen. Ich habe daraus herausgefunden, dass es ein Fehler war, weil entweder a) Sie Ihr Passwort alle x Monate einmal ändern müssen oder b). Wie ich bereits sagte, änderten sich ihre Algorithmen zur Passwortstärke und daher wurde das schwache Passwort, das ich hatte, nicht akzeptiert, obwohl sie nichts darüber sagten, als sie versuchten, sich ÜBERALL anzumelden! Dies (Nummer 2) ist das wahrscheinlichste Szenario, da mein schwaches Passwort ungefähr 4 Monate alt war und ich es in Google Mail verwenden konnte.

Es ist ziemlich schlimm, dass sie nichts darüber gesagt haben, aber es macht Sinn. Da die meisten entführten E-Mails mit Software außerhalb von Google Mail angemeldet sind und Sie vermutlich ein stärkeres Kennwort benötigen, wenn Sie Google Mail außerhalb der Google Mail-Umgebung verwenden möchten.

Ich hoffe das hilft!


2
Vielen Dank, wie Sie sagen, ändern Sie das Passwort so, dass es sicher ist und alles gut funktioniert.
Gavin

1
Dies war genau mein Problem - alle anderen Vorschläge betrafen die Konfiguration, aber meine Konfiguration war von Anfang an korrekt, aber ich bekam immer wieder den Fehler. Das Ändern des Passworts machte den Unterschied,
André Vermeulen

Vielen Dank, endlich konnte ich dieses Problem lösen. Mein Fall war sogar noch komplizierter. Ich konnte E-Mails von meinem Entwicklungscomputer (in Georgia, Kaukasus) senden, aber E-Mails von Produktionsservern (UK) scheiterten danach Ändern des Passworts zu einem komplexen alles funktioniert jetzt :)
Kirill Chilingarashvili

Vielen Dank. Ich hatte das gleiche Problem mit meinem Google Mail-Konto, das keine Kennwortstärke besaß. Ich habe es mit einem starken aktualisiert und meine Codes funktionieren.
Thomas.Benz

Danke, ja, endlich ändern Sie einfach das Passwort in ein sicheres.
Mischa Beskin

66

Zusätzlich zu den anderen oben genannten Schritten zur Fehlerbehebung möchte ich hinzufügen, dass Sie, wenn Sie die Zwei-Faktor-Authentifizierung (auch als zweistufige Überprüfung bezeichnet ) in Ihrem GMail-Konto aktiviert haben , ein anwendungsspezifisches Kennwort generieren und dieses neu verwenden müssen generiertes Passwort zur Authentifizierung über SMTP .

Um eine zu erstellen, besuchen Sie: https://www.google.com/settings/ und wählen Sie Anwendungen und Websites autorisieren , um das Kennwort zu generieren.


1
Ich hatte keine 2-Schritt-Überprüfung aktiviert und es war egal, wie sicher ich das Passwort gemacht habe. Nur so konnte ich mein Problem beheben. Ich konnte andere Google Mail-Konten ohne zweistufige und schwächere Passwörter ohne Probleme verwenden. Um das Konto zu verwenden, das ich wirklich verwenden wollte, musste ich zwei Schritte aktivieren und ein anwendungsspezifisches Passwort verwenden.
Ian Robertson

Genau das, was ich mache, aber immer noch der gleiche Fehler: - / Es verhält sich so, als ob mein Passwort nicht stark genug ist, aber ich verwende das App-Passwort, das mir Google Mail gegeben hat !!!
Jerry Dodge

54
Turn On Access For Less Secure Apps and it will work for all no need to change password.

Link zur Google Mail-Einstellung

Geben Sie hier die Bildbeschreibung ein


1
Das hat bei mir funktioniert. Noch mehr, als ich versuchte, E-Mails auf die oben genannte Weise zu senden, erhielt ich tatsächlich E-Mails von Google, in denen ausdrücklich angegeben wurde, dass sie diesen Versuch für eine weniger sichere App blockiert haben, und sie erwähnten diesen Weg, um ihn zu beheben
Demarsch

1
Dies ist der wichtigste Schlüssel im Puzzle, da ich jede andere Einstellung eingerichtet hatte und es anscheinend nicht funktionierte. Sobald ich diese Einstellung aktiviert hatte, funktionierte es einfach wie ein Zauber.
Verloren am

1
Das hat bei mir funktioniert. App-Passwort + SSL + NetworkCredentials. (VB.NET)
CrazyIvan1974

30

Ich hatte auch einige Probleme beim Senden von E-Mails von meinem Google Mail-Konto, die auf mehrere der oben genannten Situationen zurückzuführen waren. Hier ist eine Zusammenfassung, wie ich es zum Laufen gebracht und gleichzeitig flexibel gehalten habe:

  • Richten Sie zunächst Ihr GMail-Konto ein:
    • Aktivieren Sie IMAP und bestätigen Sie die richtige maximale Anzahl von Nachrichten (Sie können dies hier tun).
    • Stellen Sie sicher, dass Ihr Passwort mindestens 7 Zeichen lang und sicher ist (laut Google).
    • Stellen Sie sicher, dass Sie nicht zuerst einen Captcha-Code eingeben müssen. Sie können dies tun, indem Sie eine Test-E-Mail von Ihrem Browser senden.
  • Nehmen Sie Änderungen in web.config vor (oder in app.config, das habe ich noch nicht ausprobiert, aber ich gehe davon aus, dass es genauso einfach ist, es in einer Windows-Anwendung zum Laufen zu bringen):
<configuration>
    <appSettings>
        <add key="EnableSSLOnMail" value="True"/>   
    </appSettings>

    <!-- other settings --> 

    ...

    <!-- system.net settings -->
    <system.net>
        <mailSettings>
            <smtp from="yourusername@gmail.com" deliveryMethod="Network">
                <network 
                    defaultCredentials="false" 
                    host="smtp.gmail.com" 
                    port="587" 
                    password="stR0ngPassW0rd" 
                    userName="yourusername@gmail.com"
                    />
                <!-- When using .Net 4.0 (or later) add attribute: enableSsl="true" and you're all set-->
            </smtp>
        </mailSettings>
    </system.net>
</configuration>
Add a Class to your project:

Imports System.Net.Mail

Public Class SSLMail

    Public Shared Sub SendMail(ByVal e As System.Web.UI.WebControls.MailMessageEventArgs)

        GetSmtpClient.Send(e.Message)

        'Since the message is sent here, set cancel=true so the original SmtpClient will not try to send the message too:
        e.Cancel = True

    End Sub

    Public Shared Sub SendMail(ByVal Msg As MailMessage)
        GetSmtpClient.Send(Msg)
    End Sub

    Public Shared Function GetSmtpClient() As SmtpClient

        Dim smtp As New Net.Mail.SmtpClient
        'Read EnableSSL setting from web.config
        smtp.EnableSsl = CBool(ConfigurationManager.AppSettings("EnableSSLOnMail"))
        Return smtp
    End Function

End Class

Und wann immer Sie E-Mails senden möchten, müssen Sie nur noch anrufen SSLMail.SendMail:

zB auf einer Seite mit einem PasswordRecovery-Steuerelement:

Partial Class RecoverPassword
Inherits System.Web.UI.Page

Protected Sub RecoverPwd_SendingMail(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MailMessageEventArgs) Handles RecoverPwd.SendingMail
    e.Message.Bcc.Add("webmaster@example.com")
    SSLMail.SendMail(e)
End Sub

End Class

Oder irgendwo in Ihrem Code können Sie anrufen:

SSLMail.SendMail(New system.Net.Mail.MailMessage("from@from.com","to@to.com", "Subject", "Body"})

Ich hoffe das hilft jedem, der auf diesen Beitrag stößt! (Ich habe VB.NET verwendet, aber ich denke, es ist trivial, es in eine beliebige .NET-Sprache zu konvertieren.)


+1 "enableSsl =" true "- Dies funktioniert für eine Legacy-App, die die Smtp.enableSsl-Eigenschaft nicht speziell festlegt, ohne die Assemblys neu zu kompilieren. Ausgezeichneter Tipp!
Metro Smurf

und vergessen Sie nicht die Firewall. Port 587 ist kein üblicher Port zum Öffnen.
Guy Lowe

13
Dim SMTPClientObj As New Net.Mail.SmtpClient
SMTPClientObj.UseDefaultCredentials = False
SMTPClientObj.Credentials = New System.Net.NetworkCredential("myusername@gmail.com", "mypwd")
SMTPClientObj.Host = "smtp.gmail.com"
SMTPClientObj.Port = 587
SMTPClientObj.EnableSsl = True
SMTPClientObj.Send("myusername@gmail.com","yourusername@gmail.com","test","testbody")

Wenn Sie eine Fehlermeldung wie "Der SMTP-Server erfordert eine sichere Verbindung oder der Client wurde nicht authentifiziert. Die Serverantwort lautete: 5.5.1 Authentifizierung erforderlich. Weitere Informationen unter", wie ich zuvor erhalten habe, stellen Sie sicher, dass die Zeile SMTPClientObj.UseDefaultCredentials = Falseund diese Zeile enthalten sind sollte vor dem SMTPClientObj.Credentials.

Ich habe versucht, diese beiden Zeilen in die entgegengesetzte Richtung zu wechseln, und der Fehler 5.5.1 Authentifizierung erforderlich wurde zurückgegeben.


Genau das ist mir passiert. Wer hätte gedacht, dass die Reihenfolge der Einstellung von Eigentum Dinge reparieren / brechen würde!
Bill Yang

Dies war auch für mich das Problem, ich habe die Bestellung wie vorgeschlagen umgestellt und es funktioniert gut - Kopfschmerzen, ugh!
Eth0

13

Oh ... Es ist erstaunlich ... Zuerst konnte ich aus irgendeinem Grund keine E-Mail senden. Aber nachdem ich die Reihenfolge dieser beiden Zeilen wie folgt geändert habe, funktioniert es perfekt.

//(1)
client.UseDefaultCredentials = true;
//(2)
client.Credentials = new System.Net.NetworkCredential("username@gmail.com", "password");

Ich hoffe das hilft!!! :) :)


1
Ja, die Bestellung macht den Unterschied. Insbesondere, wenn Sie die Eigenschaft Anmeldeinformationen festlegen und keine Standardanmeldeinformationen verwenden möchten.
Stefan Cvetanovski

1
Gemäß der Dokumentation müssen Sie UseDefaultCredentials = false festlegen, um Anmeldeinformationen zu verwenden. Diese beiden Einstellungen scheinen jedoch insgeheim miteinander verflochten zu sein. Wenn Sie UseDefaultCredentials auf true oder false setzen, hat dies den Nebeneffekt, dass Credentials auf null gesetzt werden. Und es scheint, dass das Setzen von Anmeldeinformationen Nebeneffekt setzen kann UseDefaultCredentials = false. Dies ist jedoch nicht dokumentiert, könnte ein Fehler oder nur ein lahmer Entwickler sein.
Aaron

10

Das Problem liegt nicht in der technischen Fähigkeit, über Google Mail zu senden. Das funktioniert in den meisten Situationen. Wenn Sie einen Computer nicht zum Senden bringen können, liegt dies normalerweise daran, dass der Computer mindestens einmal nicht mit einem Menschen an der Steuerung authentifiziert wurde.

Das Problem, mit dem die meisten Nutzer konfrontiert sind, besteht darin, dass Google beschließt, die Grenzwerte für ausgehende Nachrichten ständig zu ändern. Sie sollten Ihrer Lösung immer Verteidigungscode hinzufügen. Wenn Sie Fehler sehen, verringern Sie Ihre Sendegeschwindigkeit und hören Sie für eine Weile auf zu senden. Wenn Sie weiterhin versuchen, Google zu senden, verlängert sich Ihre Verzögerungszeit manchmal um zusätzliche Zeit, bevor Sie erneut senden können.

Was ich in meinem aktuellen System getan habe, ist das Senden mit einer Verzögerung von 1,5 Sekunden zwischen jeder Nachricht. Wenn ich dann Fehler bekomme, halte für 5 Minuten an und beginne dann erneut. Dies funktioniert normalerweise und ermöglicht es Ihnen, bis an die Grenzen des Kontos zu senden (zuletzt habe ich überprüft, dass es 2.000 für erstklassige Kundenanmeldungen pro Tag waren).


1
Das war genau mein Problem! Bei der Bereitstellung in Production wurde das Problem angezeigt. Nachdem ich mich auf dem Server selbst bei Google Mail angemeldet habe, funktioniert es wieder.
ThisGuy


9

Ich hatte das gleiche Problem, aber es stellte sich heraus, dass mein Virenschutz ausgehende "Spam" -E-Mails blockierte. Durch Deaktivieren konnte ich über Port 587 SMTP-E-Mails über GMail senden


Ich habe Windows Defender deaktiviert und es hat auch angefangen zu funktionieren.
MorioBoncz

9

Wenn hier nichts anderes für Sie funktioniert hat, müssen Sie möglicherweise den Zugriff auf Ihr Google Mail-Konto über Anwendungen von Drittanbietern zulassen. Das war mein Problem. Gehen Sie wie folgt vor, um den Zugriff zu ermöglichen:

  1. Melden Sie sich in Ihrem Google Mail-Konto an.
  2. Besuchen Sie diese Seite https://accounts.google.com/DisplayUnlockCaptcha und klicken Sie auf die Schaltfläche, um den Zugriff zu ermöglichen.
  3. Besuchen Sie diese Seite https://www.google.com/settings/security/lesssecureapps und aktivieren Sie den Zugriff für weniger sichere Apps.

Das hat bei mir funktioniert, hoffe es funktioniert bei jemand anderem!


8

Ich bin nicht sicher, welche .NET-Version dafür erforderlich ist, da eglasius erwähnt hat, dass es keine passende enableSslEinstellung gibt (ich verwende .NET 4.0, aber ich vermute, dass es in .NET 2.0 oder höher funktioniert), aber diese Konfiguration hat gerade funktioniert Ich (und erfordert keine programmatische Konfiguration):

<system.net>
  <mailSettings>
    <smtp from="myusername@gmail.com" deliveryMethod="Network">
      <network defaultCredentials="false" enableSsl="true" host="smtp.gmail.com" port="587" password="password" userName="myusername@gmail.com"/>
    </smtp>
  </mailSettings>
</system.net>

Möglicherweise müssen Sie zuerst POP oder IMAP in Ihrem Google Mail-Konto aktivieren: https://mail.google.com/mail/?shva=1#settings/fwdandpop

Ich empfehle es zuerst mit einem normalen Mail-Client zu versuchen ...


2
Das ist neu in 4.0. Vergleichen Sie die Versionen unter -> msdn.microsoft.com/en-us/library/ms164242(v=VS.90).aspx
eglasius

Hallo Eglasius ... OK danke dafür! Seltsamerweise haben sie nur den programmatischen Ansatz in der Vor-4.0. Ich denke, wir alle vergessen ab und zu Dinge :)
Wiebe Tijsma

6

@Andres Pompiglio: Ja, das stimmt, Sie müssen Ihr Passwort mindestens einmal ändern. Dieser Code funktioniert einwandfrei:

//Satrt Send Email Function
public string SendMail(string toList, string from, string ccList,
    string subject, string body)
{

    MailMessage message = new MailMessage();
    SmtpClient smtpClient = new SmtpClient();
    string msg = string.Empty;
    try
    {
        MailAddress fromAddress = new MailAddress(from);
        message.From = fromAddress;
        message.To.Add(toList);
        if (ccList != null && ccList != string.Empty)
            message.CC.Add(ccList);
        message.Subject = subject;
        message.IsBodyHtml = true;
        message.Body = body;
        // We use gmail as our smtp client
        smtpClient.Host = "smtp.gmail.com";   
        smtpClient.Port = 587;
        smtpClient.EnableSsl = true;
        smtpClient.UseDefaultCredentials = true;
        smtpClient.Credentials = new System.Net.NetworkCredential(
            "Your Gmail User Name", "Your Gmail Password");

        smtpClient.Send(message);
        msg = "Successful<BR>";
    }
    catch (Exception ex)
    {
        msg = ex.Message;
    }
    return msg;
}
//End Send Email Function

UND Sie können die Funktion aufrufen, indem Sie Folgendes verwenden:

Response.Write(SendMail(recipient Address, "UserName@gmail.com", "ccList if any", "subject", "body"))

Der SMTP-Server erfordert eine sichere Verbindung oder der Client wurde nicht authentifiziert. Die Serverantwort lautete: 5.5.1 Authentifizierung erforderlich. Erfahren Sie mehr unter
Savas Adar

6

Ich habe eine Unternehmens-VPN-Verbindung verwendet. Dies war der Grund, warum ich keine E-Mails von meiner Bewerbung senden konnte. Es funktioniert, wenn ich die Verbindung zum VPN trenne.


5

Ich habe auch festgestellt, dass das Konto, mit dem ich mich angemeldet habe, aus irgendeinem Grund von Google deaktiviert wurde. Nachdem ich mein Passwort zurückgesetzt hatte (auf das gleiche wie früher), konnte ich problemlos E-Mails senden. Ich habe auch die Nachricht 5.5.1 erhalten.


5

Ich hatte auch versucht, viele Lösungen zu finden, aber einige Änderungen vorzunehmen, wird funktionieren

host = smtp.gmail.com
port = 587
username = email@gmail.com
password = password
enabledssl = true

mit smtpclient oben Parameter funktionieren in Google Mail


5

Ich habe den gleichen Fehler erhalten und keine der oben genannten Lösungen hat geholfen.

Mein Problem war, dass ich den Code von einem Remote-Server aus ausführte, der noch nie zum Anmelden beim Google Mail-Konto verwendet wurde.

Ich habe einen Browser auf dem Remote-Server geöffnet und mich von dort aus bei Google Mail angemeldet. Es wurde eine Sicherheitsfrage gestellt, um zu überprüfen, ob ich es war, da dies ein neuer Standort war. Nach der Sicherheitsüberprüfung konnte ich mich durch Code authentifizieren.



4

Ich bin auf denselben Fehler gestoßen ( "Der SMTP-Server erfordert eine sichere Verbindung oder der Client wurde nicht authentifiziert. Die Serverantwort lautete: 5.5.1 Authentifizierung erforderlich. Weitere Informationen unter" ) und habe festgestellt, dass ich das falsche Kennwort verwendet habe. Ich habe die Anmeldeinformationen korrigiert und sie wurden korrekt gesendet.

Ich weiß, dass dies spät ist, aber vielleicht hilft das jemand anderem.


4

Eine andere Sache, die ich gefunden habe, ist, dass Sie Ihr Passwort mindestens einmal ändern müssen. Versuchen Sie, ein Kennwort auf sicherer Ebene zu verwenden (verwenden Sie nicht denselben Benutzer wie Kennwort, 123456 usw.).


4

Noch eine mögliche Lösung für Sie. Ich hatte ähnliche Probleme beim Herstellen einer Verbindung zu Google Mail über IMAP. Nachdem Sie alle Lösungen ausprobiert haben, auf die Sie gestoßen sind und über die Sie hier und anderswo auf SO lesen werden (z. B. IMAP aktivieren, weniger sicheren Zugriff auf Ihre E-Mails aktivieren, verwenden Sie https://accounts.google.com/b/0/displayunlockcaptcha und usw.) Ich habe tatsächlich wieder ein neues Google Mail-Konto eingerichtet.

In meinem ursprünglichen Test, dem ersten von mir erstellten Google Mail-Konto, hatte ich eine Verbindung zu meinem Haupt-Google Mail-Konto hergestellt. Dies führte zu einem unberechenbaren Verhalten, bei dem Google auf das falsche Konto verwies. Führen Sie beispielsweise https://accounts.google.com/b/0/displayunlockcaptcha aus ausführen, wird mein Hauptkonto geöffnet und nicht das Konto, das ich zu diesem Zweck erstellt habe.

Als ich ein neues Konto erstellte und es nicht mit meinem Hauptkonto verband, stellte ich nach den oben beschriebenen Schritten fest, dass es einwandfrei funktioniert hat!

Ich habe dies noch nicht bestätigt (dh reproduziert), aber es hat es anscheinend für mich getan ... hoffe, es hilft.


4
  1. Überprüfen Sie zuerst die Einstellungen Ihres Google Mail-Kontos und aktivieren Sie "Zugriff für weniger sichere Apps". Geben Sie hier die Bildbeschreibung ein

Wir empfehlen dringend, dass Sie eine sichere App wie Google Mail verwenden, um auf Ihr Konto zuzugreifen. Alle von Google erstellten Apps erfüllen diese Sicherheitsstandards. Die Verwendung einer weniger sicheren App kann Ihr Konto jedoch anfällig machen. Mehr erfahren.

  1. einstellen

    smtp.UseDefaultCredentials = false;

    Vor

    smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);

4

Es gibt einen oder mehrere Gründe für diesen Fehler.

  • Melden Sie sich mit Google Mail (oder einem anderen Fall) in Ihrem lokalen System an.

  • Suchen Sie auch nach einer weniger sicheren App und setzen Sie sie auf "Einschalten". Hier ist der Link für GMAIL. https://www.google.com/settings/security/lesssecureapps

  • Suchen Sie in Ihrem E-Mail-Code nach EnableSsl und setzen Sie ihn auf true.

    smtp.EnableSsl = true;
  • Überprüfen Sie auch, welchen Port Sie gerade verwenden. 25 ist global, aber Sie können es auch für andere wie 587 überprüfen. Überprüfen Sie hier. Findet die gesamte SMTP-Kommunikation über 25 statt?

  • WENN SIE AUF FERNBEDIENUNG SIND : Überprüfen Sie die Antwort von Vlad Tamas oben.


Was ist, wenn ich die weniger sicheren App-Einstellungen nicht aktivieren möchte? Wie machen andere E-Mail-Clients dies? Warum kann ich das nicht auch mit c # tun?
user734028

3

Sie können auch eine Verbindung über Port 465 herstellen. Aufgrund einiger Einschränkungen des System.Net.Mail-Namespace müssen Sie möglicherweise Ihren Code ändern. Dies liegt daran, dass der Namespace nicht die Möglichkeit bietet, implizite SSL-Verbindungen herzustellen. Dies wird unter http://blogs.msdn.com/b/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx und I erläutert haben ein Beispiel für die Verwendung des CDO (Collaborative Data Object) in einer anderen Diskussion geliefert ( GMail SMTP über C # .Net-Fehler an allen Ports ).


3

Ich hatte dieses Problem gelöst. Anscheinend wird diese Nachricht in mehreren Fehlertypen verwendet. Mein Problem war, dass ich mein Maximum von 500 gesendeten Mails erreicht hatte.

Melden Sie sich beim Konto an und versuchen Sie manuell, eine E-Mail zu senden. Wenn das Limit erreicht wurde, werden Sie darüber informiert


2

Wenn Ihr Google Mail-Konto eine Bestätigung in zwei Schritten enthält, müssen Sie ein App-Kennwort generieren. https://support.google.com/accounts/answer/185833?p=app_passwords_sa&hl=de&visit_id=636903322072234863-1319515789&rd=1 Wählen Sie So generieren Sie eine App-Kennwortoption und führen Sie die angegebenen Schritte aus. Kopieren Sie das generierte App-Passwort und fügen Sie es irgendwo ein, da Sie es nicht wiederherstellen können, nachdem Sie auf FERTIG geklickt haben.


2
smtp.Host = "smtp.gmail.com"; //host name
smtp.Port = 587; //port number
smtp.EnableSsl = true; //whether your smtp server requires SSL
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
smtp.Timeout = 20000;

1

Ändern Sie Ihr Google Mail-Passwort und versuchen Sie es erneut. Danach sollte es funktionieren.

Ich weiß nicht warum, aber jedes Mal, wenn Sie Ihr Hosting ändern, müssen Sie Ihr Passwort ändern.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.