Как мое приложение ASP.NET автоматически получает настройки SMTP из web.config?

Я заметил, что мы всегда такие:

SmtpClient mSmtpClient = new SmtpClient();
// Send the mail message
mSmtpClient.Send(mMailMessage);

И единственное место, где устанавливаются учетные данные, находится в web.config:

  <system.net>
    <mailSettings>
      <smtp>
        <network host="xxx.xx.xxx.229" userName="xxxxxxxx" password="xxxxxxxx"/>
      </smtp>
    </mailSettings>
  </system.net>

Итак, мой вопрос: как он автоматически выводит их?


person Ryan    schedule 04.05.2010    source источник


Ответы (3)


В документации указано, что конструктор без параметров SmtpClient считывает свою конфигурацию из файла конфигурации приложения или компьютера. Для веб-приложения файлом конфигурации приложения является web.config. Это также означает, что если элемент mailSettings не установлен в Web.config, он будет искать настройки в machine.config, прежде чем сдаться:

«Этот конструктор инициализирует свойства Host, Credentials и Port для нового SmtpClient, используя настройки в файлах конфигурации приложения или компьютера».

person driis    schedule 04.05.2010

В вашей папке Windows есть файл machine.config, и каждый веб-сайт (или приложение) имеет файл web.config (или файл app.config). Эти файлы объединяются для получения настроек домена приложения.

Класс smtp просто получает доступ к конфигурации, вероятно, через класс ConfigurationManager< /а>

person James Westgate    schedule 04.05.2010

Отличный ответ, Дриис. Я бы хотел, чтобы у меня было достаточно репутации, чтобы оценить ваш ответ, но я этого не делаю :(

Во всяком случае, я дал ответ на что-то подобное, хотя это делается вручную, как показывает Абатищев. Единственная разница в том, что я решил проблему с enableSsl, которые недоступны в банкомате.

см. ветку статьи здесь.

person Jonas Mølgaard    schedule 24.08.2011