2017-09-08 4 views
0

Ich schreibe eine C# -E-Mail-Anwendung, die derzeit für die Verwendung mit Gmail entwickelt wurde, damit ich die Authentifizierung testen kann. Allerdings bekomme ich einen Fehler, der anscheinend nicht viel Sinn macht, da ich SSL auf true setze und einen Benutzer und ein Passwort benutze.Authentifizierungsfehler SMTP-Anforderung senden

Fehlermeldung: System.Net.Mail.SmtpException: ‚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‘

using System; 
using System.Net; 
using System.Net.Mail; 

namespace EmailSendingProgram 
{ 
    public class EmailSendingClass 
    { 
     public static void Main(string[] args) 
     { 
      Console.WriteLine("Type your Gmail Address: "); 
      string from = Console.ReadLine(); 

      Console.WriteLine("Type your Gmail Password: "); 
      string password = Console.ReadLine(); 

      Console.WriteLine("Type the Email Address you wish to send to: "); 
      string to = Console.ReadLine(); 

      Console.WriteLine("Type the Subject of the email: "); 
      string subject = Console.ReadLine(); 

      Console.WriteLine("Type or paste in your email (either text or HTML): "); 
      string body = Console.ReadLine(); 

      EmailSendingClass email = new EmailSendingClass(); 
      email.Send(from, password, to, subject, body); 
     } 

     /// handles sending the email 
     /// hardcoded to work with gmail just change the CreateSmtpClient from 
     /// "smtp.gmail.com", 587 to whatever you want to use 
     public void Send(string from, string password, string to, string subject, string body) 
     { 
      var message = CreateMailMessage(from, to, subject, body); 

      // Host and Port setup for use with Gmail 
      using (SmtpClient client = CreateSmtpClient("smtp.gmail.com", 587, from, password)) 
      { 
       client.Send(message); 
      } 
     } 

     /// Defines the SmtpClient for the mail message 
     /// setups up the network credentials to send the email 
     private SmtpClient CreateSmtpClient(string host, int port, string from, string password) 
     { 
      SmtpClient client = null; 

      client = new SmtpClient() 
      { 
       Host = host, 
       Port = port, 
       EnableSsl = true, 
       Credentials = new NetworkCredential(from, password) 
      }; 

      return client; 
     } 

     /// defines what is contained in the email and where it will be sent 
     /// also makes all messages send as HTML 
     private MailMessage CreateMailMessage(string from, string to, string subject, string body) 
     { 
      MailMessage message = null; 

      message = new MailMessage(from, to) 
      { 
       Subject = subject, 
       Body = body 
      }; 

      message.IsBodyHtml = true; 
      return message; 
     } 
    } 
} 

Ich verstehe, dass etwas falsch mit der Authentifizierung getan wird, aber ich kann nicht herausfinden, was spezifisch zu sein scheint. So würde jede Hilfe geschätzt werden.

+0

Welchen Port verwenden Sie? – Isma

+0

@Isma er verwendet 587, wie es im Code zeigt –

+0

Ich denke, dieser Fehler ist aufgrund der Sicherheitsregeln von Google Mail. Wenn Sie die Sicherheitseinstellungen des Google Mail-Kontos nicht deaktiviert haben (ich kann mich nicht erinnern, welche es war, tut mir leid), lässt Google Mail Ihre Anwendung nicht einmal mit korrekten Anmeldedaten und Einstellungen authentifizieren. – ihpar

Antwort

0

Das Problem war nicht das Programm, sondern Gmail wurde Zeichen in von „weniger sicheren Apps“

ich einfach die sichere Taste Ihres Kontos geklickt verweigern und erlaubte dieses Konto in von weniger sicheren Anwendungen unterzeichnet werden.

enter image description here

0

Ich stieß auf ein ähnliches Problem, das durch Probleme mit TLS 1.2-Unterstützung verursacht wurde. Wenn dies der Fall ist, ist die einfachste Lösung .NET 4.6.1 oder höher. Andere Vorschläge können here und here gefunden werden.