Учитывая следующий раздел в Web.Config
:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="SomeWebsite Admin <[email protected]>">
<network host="smtp.gmail.com" port="587" defaultCredentials="true" userName="[email protected]" password="somepassword" />
</smtp>
</mailSettings>
</system.net>
И следующий фрагмент кода:
smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.EnableSsl = true;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential( "[email protected]", "somepassword" );
smtp.Send( mailMessage );
Вышеизложенное прекрасно работает, но комментирует программные переопределения, например:
smtp = new SmtpClient();
//smtp.Host = "smtp.gmail.com";
//smtp.Port = 587;
smtp.EnableSsl = true;
//smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
//smtp.UseDefaultCredentials = false;
//smtp.Credentials = new NetworkCredential( "[email protected]", "somepassword" );
smtp.Send( mailMessage );
сбой:
System.Net.Mail.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 "}
Да, пустое место после "узнайте больше" на самом деле есть, и это приносит дополнительные удовольствия. Дело в том, что я не могу жестко кодировать эти ценности, поскольку они меняются от разработки к внутренней постановке, чтобы жить. Поэтому мне интересно, почему он не работает с параметрами Web.Config
по умолчанию. Я полагаю, что у меня отсутствует одно критическое что-то другое?
* РЕДАКТИРОВАТЬ *
Вот еще несколько сведений, рассматривающих значения моего объекта smtp
(без программных переопределений, кроме EnableSSL = true):
Host = smtp.gmail.com (makes sense -- proves I'm actually editing the right Web.Config...
DeliveryMethod = Network
Port = 587
Credentials.UserName = <blank> (Problem???)
Credentials.Password = <blank> (Problem???)
Credentials.Domain = <blank>
* EDIT EDIT *
Отсутствующие значения Username
и Password
и принятый ответ ниже привели меня в проблему: defaultCredentials
в Web.Config должен быть false
.