2009-03-09 15 views
14

Estoy intentando acceder mediante programación a un archivo app.config de la aplicación Windows. En particular, estoy tratando de acceder a los "system.net/mailSettings" El siguiente códigoAcceda a la configuración de system.net desde app.config mediante programación en 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 + ""); 

no da el anfitrión, a partir. solo obtiene el número de puerto. El resto son nulos;

+0

pls fija la sección del archivo de configuración que se trate. – abhilash

+0

configuración smtp ... estoy intentando acceder a la configuración de system.net .. –

Respuesta

11

No estoy seguro si esto ayuda, pero si está tratando de hacer un SmtpClient, usará automáticamente los valores en su archivo de configuración si usa el constructor predeterminado.

+1

+1 Use el constructor predeterminado en SmtpClient y lo hará por usted. –

+0

no es el mismo archivo de configuración de programa que estoy tratando de leer ... Un programa diferente está leyendo la información de configuración ... –

18

Esto parece funcionar bien para mí:

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

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

Aquí está mi archivo app.config:

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

Sin embargo, como se ha dicho por Nathan, puede utilizar los archivos de aplicación o configuración de la máquina a especifique valores predeterminados de host, puerto y credenciales para todos los objetos SmtpClient. Para obtener más información, vea <mailSettings> Element en MDSN.

+0

Estoy usando el mismo código, pero siempre mailSettings es nulo – kbvishnu

8

he utilizado la siguiente para acceder a los 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()); 
    } 
} 
Cuestiones relacionadas