Warum SmtpClient.UseDefaultCredentials ignoriert?

Ich versuche zum senden von e-mails über eine domain-SMTP-server verwendet die Integrierte Windows-Authentifizierung. Wenn explizite Angabe der Anmeldeinformationen, funktioniert alles einwandfrei:

using (var client = new SmtpClient("<Server>"))
{
    client.Credentials = new NetworkCredential("<User name>", "<Password>");
    client.EnableSsl = true;
    client.Send(...);
}

SMTP-server-logs zeigen, EHLO, STARTTLS STARTTLS und EHLO, dann AUTH, MAIL, etc.

Wenn, auf der anderen Seite, Standard-Anmeldeinformationen verwendet werden:

using (var client = new SmtpClient("<Server>"))
{
    client.UseDefaultCredentials = true;
    client.EnableSsl = true;
    client.Send(...);
}
  • den SmtpException geworfen wird, mit einer Meldung "Fehler beim senden von mail.";
  • den inneren IOException Meldung: "Unable to read data from the transport connection: Ein vorhandener Anschluss wurde gewaltsam vom Remotecomputer host geschlossen.", und
  • die innere-innere SocketException ist: "Eine vorhandene Verbindung wurde zwangsweise geschlossen durch remote-host".

SMTP-server-logs zeigen, EHLO, STARTTLS STARTTLS und EHLO, dann nichts mehr.

Ist das Ergebnis genau das gleiche (Erfolg für die erste Probe, Ausfall für den zweiten), wenn die Optionen verschoben werden aus dem source-code zur App.config configuration/system.net/mailSettings/smtp/network, und wenn Sie die port-Nummer angegeben ist oder nicht.

Da:

  • laut der Dokumentation, SmtpClient.UseDefaultCredentials "[g]ets oder setzt einen booleschen Wert, der steuert, ob die DefaultCredentials-sind geschickt mit Anfragen", dass
  • "Für eine client-seitige Anwendung, [CredentialCache.DefaultCredentials] sind in der Regel die Windows-Anmeldeinformationen (Benutzername, Kennwort und Domäne) des Benutzers, der die Anwendung ausführt", und das
  • den getesteten code ist eine Windows Forms-client-Anwendung läuft auf dem selben Konto, dessen Anmeldeinformationen angegeben wurden in der ersten Probe oben,

warum das zweite Beispiel nicht, während das erste funktioniert?


In einem forum es wurde vorgeschlagen, , kann das Problem verursachen, indem Sie die SMTP-server unterstützt keine NTLM. Durch EHLOing dem server, es wird angezeigt, dass NTLM ist unterstützt, einer der response-Linien 250-AUTH GSSAPI NTLM.

InformationsquelleAutor Arseni Mourzenko | 2012-06-06

Schreibe einen Kommentar