2009-03-09 5 views
14

Tôi đang cố gắng truy cập chương trình vào tệp ứng dụng Windows.config. Trong đó, tôi đang cố gắng để truy cập vào "system.net/mailSettings" Các mã sauTruy cập cài đặt system.net từ app.config theo lập trình trong 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 + ""); 

thất bại trong việc cung cấp cho máy chủ, từ. nó chỉ nhận được số cổng. Phần còn lại là null;

+0

Xin vui lòng gửi phần của tập tin cấu hình mà là câu hỏi. – abhilash

+0

cài đặt smtp ... tôi đang cố truy cập cài đặt system.net .. –

Trả lời

11

Không chắc chắn nếu điều này có ích, nhưng nếu bạn đang cố gắng tạo một SmtpClient, điều đó sẽ tự động sử dụng các giá trị trong tệp cấu hình của bạn nếu bạn sử dụng hàm tạo mặc định.

+1

+1 Sử dụng hàm tạo mặc định trên SmtpClient và nó sẽ thực hiện tất cả điều này cho bạn. –

+0

không phải tập tin cấu hình chương trình giống như tôi đang cố gắng đọc ... Một chương trình khác đang đọc thông tin cấu hình ... –

18

Điều này dường như làm việc ok cho tôi:

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

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

Dưới đây là file app.config của tôi:

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

Tuy nhiên, như đã nói bởi Nathan, bạn có thể sử dụng ứng dụng hoặc cấu hình máy file chỉ định giá trị máy chủ lưu trữ, cổng và thông tin đăng nhập mặc định cho tất cả các đối tượng SmtpClient. Để biết thêm thông tin, hãy xem <mailSettings> Element trên MDSN.

+0

Tôi đang sử dụng cùng một mã, nhưng luôn luôn cài đặt thư là null – kbvishnu

8

tôi đã sử dụng sau đây để truy cập 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()); 
    } 
}