2009-03-09 19 views
14

Ich versuche programmgesteuert auf eine Windows-Anwendung app.config-Datei zuzugreifen. Insbesondere Ich versuche, die „system.net/mailSettings“ für den Zugriff auf den folgenden CodeZugriff auf System.net-Einstellungen von app.config programmgesteuert in 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 + ""); 

versagt, den Wirt zu geben, aus. es erhält nur die Portnummer. Der Rest ist null;

+0

Pls schreiben den Abschnitt der Konfigurationsdatei, die Frage ist. – abhilash

+0

smtp settings ... ich versuche auf system.net settings zuzugreifen. –

Antwort

11

Nicht sicher, ob das hilft, aber wenn Sie versuchen, einen SmtpClient zu erstellen, werden automatisch die Werte in Ihrer Konfigurationsdatei verwendet, wenn Sie den Standardkonstruktor verwenden.

+1

+1 Verwenden Sie den Standardkonstruktor auf SmtpClient und es wird alles für Sie tun. –

+0

es ist nicht die gleiche Programmkonfigurationsdatei Ich versuche zu lesen ... Ein anderes Programm liest die Konfigurationsinformationen ... –

18

Dies scheint für mich ok zu arbeiten:

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

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

Hier ist meine app.config-Datei:

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

Wie jedoch von Nathan angegeben, können Sie die Anwendung oder Maschinenkonfigurationsdateien verwenden Geben Sie die Standardwerte für Host, Port und Anmeldeinformationen für alle SmtpClient Objekte an. Weitere Informationen finden Sie unter <mailSettings> Element auf MDSN.

+0

Ich benutze den gleichen Code, aber immer mailSettings ist null – kbvishnu

8

habe ich die im Anschluss an die mailsettings zuzugreifen:

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()); 
    } 
} 
Verwandte Themen