2009-03-09 2 views
14

Я пытаюсь программным образом получить доступ к файлу app.config приложения Windows. В частности, я пытаюсь получить доступ к «system.net/mailSettings» Следующий кодДоступ к настройкам system.net из app.config программно в C#

Configuration config = ConfigurationManager.OpenExeConfiguration(configFileName); 

MailSettingsSectionGroup settings = 
    (MailSettingsSectionGroup)config.GetSectionGroup(@"system.net/mailSettings"); 

Console.WriteLine(settings.Smtp.DeliveryMethod.ToString()); 

Console.WriteLine("host: " + settings.Smtp.Network.Host + ""); 
Console.WriteLine("port: " + settings.Smtp.Network.Port + ""); 
Console.WriteLine("Username: " + settings.Smtp.Network.UserName + ""); 
Console.WriteLine("Password: " + settings.Smtp.Network.Password + ""); 
Console.WriteLine("from: " + settings.Smtp.From + ""); 

не дает хозяину, с. он получает только номер порта. Остальные - null;

+0

Pls разместить раздел файла конфигурации, который является вопросом. – abhilash

+0

smtp settings ... Я пытаюсь получить доступ к настройкам system.net. – 2009-03-09 07:23:09

ответ

11

Не уверен, что это помогает, но если вы пытаетесь создать SmtpClient, это будет автоматически использовать значения в вашем файле конфигурации, если вы используете конструктор по умолчанию.

+1

+1 Используйте конструктор по умолчанию на SmtpClient, и он сделает все это за вас. –

+0

его не тот же файл конфигурации программы, я пытаюсь читать ... Другая программа читает конфигурационную информацию ... – 2009-03-09 12:21:40

18

Это, кажется, работает хорошо для меня:

MailSettingsSectionGroup mailSettings = 
    config.GetSectionGroup("system.net/mailSettings") 
    as MailSettingsSectionGroup; 

if (mailSettings != null) 
{ 
    string smtpServer = mailSettings.Smtp.Network.Host; 
} 

Вот мой app.config файл:

<configuration> 
    <system.net> 
    <mailSettings> 
     <smtp> 
     <network host="mail.mydomain.com" /> 
     </smtp> 
    </mailSettings> 
    </system.net> 
</configuration> 

Однако, как заявил Натан, вы можете использовать файлы приложения или конфигурации машина укажите значения по умолчанию для узла, порта и учетных данных для всех объектов SmtpClient. Для получения дополнительной информации см. <mailSettings> Element на MDSN.

+0

Я использую тот же код, но всегда mailSettings имеет значение null – kbvishnu

8

Я использовал следующее для доступа к mailSettings:

var config = ConfigurationManager.OpenExeConfiguration(
    ConfigurationUserLevel.None); 

var mailSettings = config.GetSectionGroup("system.net/mailSettings") 
    as MailSettingsSectionGroup; 
0
private void button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 

     var mailSettings = config.GetSectionGroup("system.net/mailSettings") 
      as MailSettingsSectionGroup; 
     MailMessage msg = new MailMessage(); 
     msg.Subject = "Hi Raju"; 
     msg.To.Add("[email protected]"); 
     msg.From = new MailAddress("[email protected]"); 
     msg.Body = "Hello Raju here everything is fine."; 
     //MailSettingsSectionGroup msetting = null; 
     string mMailHost = mailSettings.Smtp.Network.Host; 

     SmtpClient mailClient = new SmtpClient(mMailHost); 
     mailClient.Send(msg); 
     MessageBox.Show("Mail Sent Succesfully..."); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.ToString()); 
    } 
} 
Смежные вопросы