Поданный следующий раздел 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 = верный):
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
в сети. Конфигурация должна быть false
.
Я не знаком с этим способом, но в web.config defaultCredentials имеет значение true, вы устанавливаете его в false, когда делаете это программно, в чем разница?
Нет возможности указать, должно ли использоваться SSL / Secure соединение при определении настроек почты в файле веб-конфигурации.
Я уверен, что именно поэтому вы получаете ошибку.
Один из способов решения этой проблемы - создать свою собственную обертку для отправки почты, а затем использовать ее в своем приложении, но вы, вероятно, уже поняли это :)
Все усложняется при использовании элементов управления членством в .net, таких как forgot password, create user и т.д. Способ решения этой проблемы - переопределить событие SendingMail, а затем установить свойство EnableSSL свойство почтового клиента в true.
Надеюсь, я смог помочь :)
Я думаю, что эта часть должна быть следующей