2010-01-07 7 views
7

Ich habe die folgenden SMTP-Details gespeichert in web.configWie programm SMTP-Server Details von web.config

<system.net> 
    <mailSettings> 
     <smtp from="[email protected]"> 
     <network host="mail.domain.com" port="25" userName="username" password="password" defaultCredentials="true"/> 
     </smtp> 
    </mailSettings> 
    </system.net> 

Wie kann ich abrufen, diese Werte aus einer C# Klasse abzurufen.

Antwort

18
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; 
} 
+2

Eine kleine nit: Würde nicht "~/web.config" zuverlässiger sein? –

+0

Richtig, das habe ich behoben. –

1

Wenn Sie E-Mail mit diesen Mail-Server-Details senden müssen, müssen Sie die Einstellungen nicht lesen und anwenden. Diese Einstellungen werden implizit in der Anwendung angewendet.

Wenn Sie es aus irgendeinem anderen Grund lesen, war ich im Begriff etwas ähnliches zu Darin's Antwort zu schreiben. Aber gerade als ich schrieb, fand ich heraus, dass er geantwortet hat. Bitte lesen Sie seine Antwort, wenn Sie wirklich lesen müssen. :)

0

Was:

string fullpath = @"C:\FullPath\YourFile.config"; 
string configSection = "system.net/mailSettings"; 
Configuration config = ConfigurationManager.OpenExeConfiguration(fullpath); 
MailSettingsSectionGroup settings = 
    config.GetSectionGroup(configSection) as MailSettingsSectionGroup;