Учитывая следующий раздел в Web.Config
:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="SomeWebsite Admin <someuser@gmail.com>">
<network host="smtp.gmail.com" port="587" defaultCredentials="true" userName="someuser@gmail.com" 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( "someuser@gmail.com", "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( "someuser@gmail.com", "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>
* РЕДАКТИРОВАНИЕ РЕДАКТИРОВАНИЯ *
Отсутствующие значения Username
и Password
и принятый ответ ниже привели меня к проблеме: defaultCredentials
в Web.Config должно быть false
.