2010-05-04 20 views
8

tôi nhận thấy rằng chúng tôi luôn luôn chỉ là như:Làm thế nào để ứng dụng ASP.NET của tôi nhận được các thiết lập SMTP tự động từ web.config?

SmtpClient mSmtpClient = new SmtpClient(); 
// Send the mail message 
mSmtpClient.Send(mMailMessage); 

Và nơi duy nhất các thông tin được thiết lập trong web.config:

<system.net> 
    <mailSettings> 
     <smtp> 
     <network host="xxx.xx.xxx.229" userName="xxxxxxxx" password="xxxxxxxx"/> 
     </smtp> 
    </mailSettings> 
    </system.net> 

Vì vậy, câu hỏi của tôi là, làm thế nào nó Automagically nhận được chúng ngoài?

+0

Phản ánh là bạn của bạn. – Steven

Trả lời

15

The documentation tuyên bố rằng hàm tạo parameterless của SmtpClient đọc cấu hình của nó từ tệp cấu hình ứng dụng hoặc máy. Đối với một ứng dụng Web, tệp cấu hình ứng dụng là web.config. Điều này cũng có nghĩa là nếu các yếu tố mailSettings không được thiết lập trong Web.config, nó sẽ tìm kiếm các thiết lập trong Machine.config, trước khi đưa lên:

"constructor này khởi Host, Credentials, và tài sản cho Cảng SmtpClient mới bằng cách sử dụng cài đặt trong ứng dụng hoặc máy tệp cấu hình. "

1

Có tệp machine.config trong thư mục cửa sổ của bạn và mỗi trang web (hoặc ứng dụng) có tệp web.config (hoặc tệp app.config). Các tệp này được kết hợp để nhận cài đặt cho miền ứng dụng.

Lớp smtp chỉ đơn giản là truy cập vào cấu hình, có thể là thông qua các ConfigurationManager Class

2
var config = WebConfigurationManager.OpenWebConfiguration("Web.config");  
var settings= config.GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup; 

if (settings!= null) 
{ 
    var port = settings.Smtp.Network.Port; 
    var host = settings.Smtp.Network.Host; 
    var username = settings.Smtp.Network.UserName; 
    var password = settings.Smtp.Network.Password;  
} 
1

xuất sắc trả lời Driis. Tôi ước tôi có đủ danh tiếng để nâng cao câu trả lời của bạn, nhưng tôi không: (

Dù sao, tôi đã cung cấp câu trả lời cho một điều tương tự, mặc dù nó được thực hiện thủ công như Abatishchev cho thấy. không phải là accesible atm.

See article thread here.

Các vấn đề liên quan