Gmail + C# + сеть. Конфигурация: отправьте почта работает программно, выдает исключение Используя сеть. Значения конфигурации

Поданный следующий раздел Web.Config:

<system.net>
    <mailSettings>
        <smtp deliveryMethod="Network" from="SomeWebsite Admin &lt;someuser@gmail.com&gt;">
            <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.

18
задан Bob Kaufman 6 March 2010 в 02:36
поделиться

3 ответа

Я не знаком с этим способом, но в web.config defaultCredentials имеет значение true, вы устанавливаете его в false, когда делаете это программно, в чем разница?

8
ответ дан 30 November 2019 в 07:03
поделиться

Нет возможности указать, должно ли использоваться SSL / Secure соединение при определении настроек почты в файле веб-конфигурации.

Я уверен, что именно поэтому вы получаете ошибку.

Один из способов решения этой проблемы - создать свою собственную обертку для отправки почты, а затем использовать ее в своем приложении, но вы, вероятно, уже поняли это :)

Все усложняется при использовании элементов управления членством в .net, таких как forgot password, create user и т.д. Способ решения этой проблемы - переопределить событие SendingMail, а затем установить свойство EnableSSL свойство почтового клиента в true.

Надеюсь, я смог помочь :)

1
ответ дан 30 November 2019 в 07:03
поделиться

Я думаю, что эта часть должна быть следующей . Например

2
ответ дан 30 November 2019 в 07:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: