it-swarm.com.de

Google Mail-SMTP kann nicht über MailMessage & SMTP-Client auth aktiviert werden

Ich kann nicht herausfinden, warum das nicht funktioniert

SmtpClient smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    UseDefaultCredentials = false,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    Credentials = new NetworkCredential("[email protected]", "myGmailPasswordHere"),
    EnableSsl = true,
    Timeout = 10000
};


smtp.Send(mail);

Ich bekomme:

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

Ich habe EnableSsl nur auf true festgelegt, damit es nicht um eine sichere Verbindung geht.

Ich führe das von localhost aus. Und ja, mein Benutzername und mein Passwort, das ich in auth (meine Zugangsdaten für mein Google Mail-Konto) eingebe, ist 100% richtig.

18
PositiveGuy

Ich weiß, das ist ein altes Thema, ABER ... Google hat etwas an den Sicherheitseinstellungen geändert.

Kämpfte mit allen Antworten, bis ich meine E-Mail mit einer E-Mail von Google abrief, dass "wir kürzlich einen Anmeldeversuch für Ihr Google-Konto blockiert haben".

Das führte mich zu dieser Seite: Google-Kontosicherheit

Im Abschnitt "Zugriff für weniger sichere Apps" können Sie den Zugriff auf Ihr Konto von anderen Geräten/Anwendungen aus ... wie Ihrer C # -Anwendung ermöglichen.

Beachten Sie, dass es keinen Abschnitt "anwendungsspezifisch" mehr gibt.

Hoffe, das hilft jemandem ... Ich habe gerade 30 Minuten meines Lebens verloren ...

38
Tiny

Wenn die Anmeldeinformationen zu 100% richtig sind, müssen Sie UseDefaultCredentials = false first und dann die Anmeldeinformationen festlegen, die Sie für Credentials = new NetworkCredential("[email protected]", "myGmailPasswordHere") verwenden möchten.

Wenn Sie zuerst die Berechtigungsnachweise festlegen, wird beim Festlegen von UseDefaultCredentials = false die Credentials-Eigenschaft auf null festgelegt.

Dies ist drahtgebunden, aber es ist mir passiert.

Debuggen Sie Ihren Code und überprüfen Sie, ob die Credentials -Eigenschaft null ist, bevor Sie smtp.Send(message); aufrufen. Wenn ja, versuchen Sie die Reihenfolge umzukehren. Es scheint, Sie haben es in der richtigen Reihenfolge, aber wenn es null ist, verwenden Sie nicht die Inline-Initialisierung.

Ich hoffe es hilft.

EDIT: Wenn Sie die Bestätigung in zwei Schritten verwenden, stellen Sie sicher, dass Sie ein App-spezifisches Passwort verwenden.

20
edteke

Offenbar benötigt Google Mail ein anwendungsspezifisches Passwort (nicht Ihr Hauptpasswort). 

Sehen Sie sich dies an: http://support.google.com/mail/bin/answer.py?hl=de&answer=1173270

Ich hatte kürzlich das gleiche Problem.

10
Aleh Zasypkin

Ich hatte dieses Problem schon einmal und konnte es folgendermaßen beheben:

  1. Gehen Sie zu " Mein Konto ".
  2. Klicken Sie auf die Kategorie " Anmelden & Sicherheit ".
  3. Scrollen Sie nach unten zu " Connected apps & sites ".
  4. deaktivieren Sie die Option " Weniger sichere Apps zulassen ".

Ich habe diese Option gerade deaktiviert und mein Code wurde erfolgreich ausgeführt.

3

Das hat für mich gut funktioniert

SmtpClient smtp = new SmtpClient
    {
        Host = "smtp.gmail.com",
        Port = 587,
        UseDefaultCredentials = false,
        DeliveryMethod = SmtpDeliveryMethod.Network,
        Credentials = new NetworkCredential("[email protected]", "mypassword"),
        EnableSsl = true,
        Timeout = 10000
    };

    MailMessage message = new MailMessage();
    message.Body = "hello there";
    message.Subject = "hi!!";
    message.To.Add("[email protected]");
    message.From = new MailAddress("[email protected]");
    smtp.Send(message);
2
krishna

Für mich erforderte die Lösung 2 "Schritte":

  • legen Sie zuerst UseDefaultCredentials = false fest, und legen Sie dann die Anmeldeinformationen fest, die ich Credentials = new NetworkCredential("[email protected]", "myGmailPasswordHere") verwenden möchte. Wenn Sie zuerst die Anmeldeinformationen festlegen, wenn Sie UseDefaultCredentials = false einstellen, wird die Credentials-Eigenschaft null.
  • Weniger sichere Apps in meinem Google-Profil zulassen.
1
Martino Messori
<mailSettings>
            <smtp from="[email protected]">
                <network Host="smtp.gmail.com" password="yourpassword" port="587" userName="username"/>
            </smtp>
</mailSettings>

Bearbeiten: Versuchen Sie, diese Zeile smtp.Credentials = Credentials danach hinzuzufügen 

Credentials = new NetworkCredential("[email protected]", "myGmailPasswordHere"),

0
coder

Folgen Sie einfach dieser Anleitung für die C # WPF-Anwendung:

       private void SendByGmail(string subject, string body, string recepientEmail, string MailMsgFrom, string MailMsgPass)
        {
            using (MailMessage mailMessage = new MailMessage())
            {
                mailMessage.From = new MailAddress(MailMsgFrom);
                mailMessage.Subject = subject;
                mailMessage.Body = body;
                mailMessage.IsBodyHtml = true;
                mailMessage.To.Add(new MailAddress(recepientEmail));
                mailMessage.Priority = System.Net.Mail.MailPriority.High;
                SmtpClient smtp = new SmtpClient();
                smtp.Host = "smtp.gmail.com";
                smtp.EnableSsl = true;
                smtp.Timeout = 200000;
                System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();
                NetworkCred.UserName = MailMsgFrom;
                NetworkCred.Password = MailMsgPass;
                smtp.UseDefaultCredentials = true;
                smtp.Credentials = NetworkCred;
                smtp.Port = 587;
                smtp.Send(mailMessage);

            }
        }

Danach sollten Sie diesen Fehler erhalten 

smtpException   {"The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. Learn more at"}   System.Net.Mail.SmtpException

Um dieses Problem zu lösen, loggen Sie sich zunächst bei Ihrem Google-Konto in Ihrem Webbrowser ein. Dann folgen Sie einfach diesem Link Google-Kontoaktivität . Dann erhalten Sie aktuelle Geräte und Aktivitäten für Ihr Konto. Wenn zeigen, blockieren Sie Ihre aktuelle Aktivität von Ihrem aktuellen Gerät. Entsperren Sie das einfach. Versuchen Sie dann erneut, eine E-Mail zu senden. 
Vielen Dank

0
RKTUXYN

Hatte dasselbe Problem von einer auf Amazon AWS-Hosting ausgeführten ASP.NET-Anwendung auf smtp.gmail.com zugegriffen. Es stellte sich heraus, dass meine Konfiguration richtig war - sie funktionierte auch von einem anderen Computer aus -, aber Google Mail würde meinen Anmeldeversuch ablehnen, weil ich versuche, mich an einem ungewöhnlichen Ort anzumelden. Ich habe mich über die Weboberfläche (www.gmail.com) bei gmail angemeldet und musste ein Captcha beantworten. Danach hat es geklappt.

0
user2037013

Habe einen Rückruf wie folgt. Sagen Sie System.Net, um den Fehler zu ignorieren!

Fügen Sie dies vor dem Aufruf von Send() hinzu.

ServicePointManager.ServerCertificateValidationCallback = 
    delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) 
    { return true; };

smtp.Send(mail);
0
ukhardy

Mein Problem war, dass der Domaininhaber unseres Google Mail-Kontos sowohl "Zugriff für weniger sichere Apps" als auch die Authentifizierung in zwei Schritten deaktiviert hatte. Es gab keine Möglichkeit, dies zu aktivieren, ich konnte die Einstellung nicht einmal sehen. Also habe ich stattdessen mit meinem persönlichen Konto getestet, und es hat gut funktioniert.

0
Robert