2011-07-12 12 views
11

Należy przeczytać ustawienia poczty e-mail SMTP zdefiniowane w sekcji system.net w pliku web.config.Uzyskiwanie dostępu do ustawień poczty SMTP z pliku Web.Config przy użyciu C#

Poniżej jest jednym z przykładów ustawienia SMTP zdefiniowany w pliku web.config: (zgodnie z sekcją)

<system.net> 
<mailSettings> 
<smtp deliveryMethod="Network" from="[email protected]"> 
<network defaultCredentials="true" host="localhost" port="25" userName="user” password="testPassword"/> 
</smtp> 
</mailSettings> 
</system.net> 

Jak uzyskać dostęp do ustawienia SMTP poczty za pomocą C#

+0

'ConfigurationManager.GetSection' – V4Vendetta

+0

to ktoś kopiuje przykładowy kod, należy uważać jako cudzysłów po użytkownik nie jest standardowym więc będzie nieważny w web.config. – user1069816

Odpowiedz

8

Można użyć WebConfigurationManager:

Configuration configurationFile = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath); 
MailSettingsSectionGroup mailSettings = configurationFile.GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup; 

Response.Write(mailSettings.Smtp.Network.Host); 
+0

Próbuję to i działa poprawnie, ale to zgłasza błąd: "Serwer SMTP wymaga bezpiecznego połączenia lub klient nie został uwierzytelniony. Odpowiedź serwera: 5.7.0 Najpierw należy wydać komendę STARTTLS." Niezależnie od tego, czy używam serwera smtp.gmail.com i portu 587 z enablessl = true. –

10

Wystarczy użyć System.Net.Mail klas wysłać swoje e-maile. Automatycznie odbierze ustawienia poczty ze swojego pliku web.config.

+1

Dla kompletności, tutaj jest link, jak to zrobić: http://weblogs.asp.net/scottgu/archive/2005/12/10/432854.aspx –

2

Pokrewne ... Jeśli masz dostęp zarówno od strony internetowej i aplikacji ten kod może się przydać.

Configuration config; 

bool isWebApp = HttpRuntime.AppDomainAppId != null; 

if (isWebApp) 
{ 
    config = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath); 
} 
else 
{ 
    config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
} 

var mailSettings = config.GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup;  
Powiązane problemy