Я пытаюсь отправить электронную почту через SMTP-сервер домена, который использует встроенную проверку подлинности Windows. При явном указании учетных данных, все работает отлично: журналы сервераПочему SmtpClient.UseDefaultCredentials игнорируется?
using (var client = new SmtpClient("<Server>"))
{
client.Credentials = new NetworkCredential("<User name>", "<Password>");
client.EnableSsl = true;
client.Send(...);
}
SMTP показать EHLO, STARTTLS, STARTTLS и EHLO, затем AUTH, почта и т.д.
Когда, с другой стороны, учетные данные по умолчанию являются используется:
using (var client = new SmtpClient("<Server>"))
{
client.UseDefaultCredentials = true;
client.EnableSsl = true;
client.Send(...);
}
SmtpException
отбрасывается с сообщением, «Ошибка отправки почты.»внутренний
IOException
сообщение: «Невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным узлом.», Авнутренняя-внутренняя
SocketException
является: «Существующий соединение было принудительно закрыто удаленным хостом ».
Журналы SMTP-сервера показывают EHLO, STARTTLS, STARTTLS и EHLO, а затем ничего.
Результат такой же (успех для первого образца, отказ для второго), если параметры перемещены из исходного кода в App.config configuration/system.net/mailSettings/smtp/network
и всякий раз, когда указан номер порта или нет.
Учитывая, что:
according to the documentation,
SmtpClient.UseDefaultCredentials
«[G] ETS или задает логическое значение, которое управляет ли DefaultCredentials посылается с запросами», что«Для стороны клиента приложение, [
CredentialCache.DefaultCredentials
] обычно являются учетными данными Windows (имя пользователя, пароль и домен) пользователя, выполняющего приложение », и чтопроверено c ода это на стороне клиента приложение, работающее с той же учетной записи, чьи учетные данные были указаны в первом примере выше Windows Forms,
почему второй образец терпит неудачу, в то время как первый из них работает?
На форуме it was suggested, что проблема может быть причиной SMTP-сервер не поддерживает NTLM. Посредством EHLOing сервера, похоже, что NTLM поддерживается, одна из линий ответа - 250-AUTH GSSAPI NTLM
.
Это имеет смысл, поскольку учетные данные могут быть установлены в значение null, если вы этого не сделаете – BumbleB2na
Это помогает. Частично. Теперь возникает новое исключение: «Для SMTP-сервера требуется защищенное соединение или клиент не прошел аутентификацию. Ответ сервера: 5.7.3 Клиент не был аутентифицирован. » –
Вы указали EnableSsl? –