Как программно получить сведения о SMTP-сервере из web.config - PullRequest
7 голосов
/ 07 января 2010

У меня есть следующие SMTP-данные, хранящиеся в web.config

<system.net>
    <mailSettings>
      <smtp from="isds@ixtent.com">
        <network host="mail.domain.com" port="25" userName="username" password="password" defaultCredentials="true"/>
      </smtp>
    </mailSettings>
  </system.net>

Как я могу получить эти значения из класса c #.

Ответы [ 3 ]

18 голосов
/ 07 января 2010
Configuration configurationFile = WebConfigurationManager
    .OpenWebConfiguration("~/web.config");
MailSettingsSectionGroup mailSettings = configurationFile
    .GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup;
if (mailSettings != null)
{
    int port = mailSettings.Smtp.Network.Port;
    string host = mailSettings.Smtp.Network.Host;
    string password = mailSettings.Smtp.Network.Password;
    string username = mailSettings.Smtp.Network.UserName;
}
1 голос
/ 07 января 2010

Если вам нужно отправить электронное письмо с данными почтового сервера, вам не нужно читать настройки и применять. Эти настройки неявно применяются в приложении.

Если вы читаете это по какой-либо другой причине, я собирался написать что-то похожее на ответ Дарина. Но как только я писал, я обнаружил, что он ответил, поэтому, пожалуйста, обратитесь к его ответу, если вам действительно нужно читать. :)

0 голосов
/ 07 января 2010

А как же:

string fullpath = @"C:\FullPath\YourFile.config";
string configSection = "system.net/mailSettings";
Configuration config = ConfigurationManager.OpenExeConfiguration(fullpath);
MailSettingsSectionGroup settings = 
    config.GetSectionGroup(configSection) as MailSettingsSectionGroup; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...